【问题标题】:Handling i18n in javascript files在 javascript 文件中处理 i18n
【发布时间】:2012-05-27 15:08:31
【问题描述】:

例如,我的应用在进行 CRUD 操作时严重依赖 AJAX 的使用。

截至目前,消息的硬编码与此类似。

function handleSaveNewMember(xhr, status, args) {  
    if(args.validationFailed || !args.result) {   
    }else{  
        showmsg.show([{summary:'Add New Member', detail: 'Successfully Added New Member', severity: 'info'}]);
    }  
}

但是,如果您将应用部署到不同的语言环境会怎样?那么如何处理 i18n 特性呢?

顺便说一句,我在这里使用了 Primefaces。

【问题讨论】:

  • 你为什么不直接设置一个FacesMessage
  • 嗨,我的应用是高度 ajaxified 并依赖于 javascript。在这种情况下,除了显示消息之外,我还需要关闭对话框和其他内容。
  • 我不明白为什么会出现问题。
  • 啊,是的.. 在您的帖子再读了一些之后,我想我知道您指的是什么。谢谢BalusC。你就是男人!

标签: javascript ajax jsf-2 internationalization primefaces


【解决方案1】:

如果你被允许使用 JQuery - 我们在 i18n 项目中使用这个不错的小插件 -

http://code.google.com/p/jquery-i18n-properties/

非常适合我们的需求..

【讨论】:

    【解决方案2】:

    这可能不是最好的解决方案,但过去我基本上链接了一个 js 文件,其中包含我在代码中引用的字符串常量。加载时,我为当前文化加载适当的 js 文件。如果该文件未加载,请确保为每个常量设置某种默认值。

    【讨论】:

    【解决方案3】:

    另一种方法是遍历您的属性文件并将其填充到HashMapmapOfLabels 然后变成带有Gson gson.toJson(mapOfLabels); 的Json 字符串

    将 Json 字符串放入一个 bean 变量中,该变量将通过 getter “链接”到您的 xhtml 页面,如下所示

    <h:inputText id="locLabelsID" value="#{myBean.locLabelsField}" styleClass="hide"/>
    

    在 js 端,你可以像这样简单地访问它并使用 jQuery 解析它:

    var myJsonVar= $("#locLabelsID").val();
    locLabels = $.parseJSON(myJsonVar); 
    

    并像这样使用您的标签键访问它

    locLabels[key];
    

    当然,哈希映射的初始化只执行一次,js 端的初始化也是如此......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-26
      • 1970-01-01
      • 2012-04-16
      • 2014-04-24
      • 2012-12-14
      • 1970-01-01
      相关资源
      最近更新 更多