我们有一个包含100多个自定义控件和XPage的庞大项目,现在我们打算以多种语言提供项目。
XPages中的本地化提供了这种美观且非常简单的方法,可以通过属性文件转换其他语言的整个项目。但是,在我们的案例中,许多自定义控件都是其他人的副本,而且许多翻译/关键字是相同的,一次又一次地改变同样的事情变得多余。
所以问题是,是否有一种更简单的方法,我们可以在一起进行大量翻译?什么,我们可以将整个翻译导出为一个文件并将其导回?
任何关于正确方向的建议/帮助都会受到赞赏。
答案 0 :(得分:4)
不要使用XPage的内置本地化。它可能适用于第一次翻译,但在XPage中(很多)更改之后很难维护。
使用托管Java bean 它管理自己的属性文件并实现Map接口。
您通常使用bean来获取字符串。
例:
使用str['name']
获取名称标签,以便在属性文件中输入以下内容
name=Name
对数据使用java.text.MessageFormat
消息
在bean中创建类似getMessage(String name, Object arg1)
的方法。
例:
使用
获取JavaScript中缺少视图的消息
str.getMessage('message.view.not.found', viewName)
用于跟踪属性文件
message.view.not.found=Could not find view {0}
答案 1 :(得分:1)
这里有两种语言的示例:
首先,您必须在Resources/Files
<强> messages.properties 强>
global.welcome = Willkommen {0} auf meiner Webseite
<强> messages_en.properties 强>
global.welcome = Welcome {0} on my website
现在,您可以在代码中的每个位置引用您的消息属性
<xp:this.resources>
<xp:bundle src="/messages.properties" var="resMessage"></xp:bundle>
</xp:this.resources>
<xp:text escape="true" id="cfUser" themeId="Text.User">
<xp:this.value><![CDATA[${javascript:I18n.format(resMessage['global.welcome'], sessionScope.commonUserName)}]]></xp:this.value>
</xp:text>