在javascript文件中处理i18n

时间:2012-05-21 05:14:51

标签: javascript ajax jsf-2 internationalization primefaces

例如,我的应用在很大程度上依赖于在进行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。

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

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

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

很好地满足我们的需求..

答案 2 :(得分:1)

另一种方法是迭代你的属性文件并将其填充到HashMapmapOfLabels然后变成带有Gson {J} {1}}的Json字符串

将Json字符串放入一个bean变量中,该变量将通过getter“链接”到你的gson.toJson(mapOfLabels);页面

xhtml

在js方面你可以简单地访问它并用jQuery解析它:

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

并使用您的标签键访问它

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

当然,哈希映射的init只进行了一次,而js方面的init也是如此...