按照here所述,有Uibinder做i18n的方式 然后有关于GWT i18n的this建议。
我正在考虑替代方案,因为我遇到了第一个解决方案的一些问题。 我想知道这两种方法的优点和缺点,所以我知道该选择什么 请指教。
答案 0 :(得分:4)
第一个解决方案非常详细,要求您将本地化文件放在特定文件夹中,并将其描述为a kind of a nightmare,但它确实支持带有(运行时)变量的文本。第二种解决方案不支持消息中的变量,但更容易使用。
第二个解决方案支持2个用例。这就是他们寻找两种解决方案的方式:
纯文字:
解决方案1:
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
ui:generateFormat='com.google.gwt.i18n.rebind.format.PropertiesFormat'
ui:generateKeys="com.google.gwt.i18n.rebind.keygen.MD5KeyGenerator"
ui:generateLocales="default">
<div><ui:msg key="helloWorld" description="Greeting">Hello, world.</ui:msg></div>
</ui:UiBinder>
解决方案2:
<ui:with field='i18n' type='x.y.client.i18n.MyMessages' />
....
<div><ui:text from="{i18n.helloWorld}" /></div>
在解决方案1中,标记内的文本将是默认文本,描述位于description属性中。在第二个解决方案中,您可以在扩展MyMessages
。
Messages
中添加它
静态方法参数:
解决方案1:
<th title="Gross receipts">
<ui:attribute ui:name='title' ui:description='Tooltip text for gross column'/>
...
</th>
解决方案2:
<th title="{i18n.grossReceiptsTitle}">...</th>
对于解决方案2,无法使用传递参数等更高级的消息,但在initWidget
调用之后,您始终可以回退以在构造函数中添加它们。