有 Uibinder 做 i18n 的方式,如此处所述,
然后有这个GWT i18n 的建议。
我正在考虑替代方案,因为我在第一个解决方案中遇到了一些问题。我想知道这两种方法的优缺点,所以我知道该选择什么。
请指教。
第一个解决方案非常冗长,需要您将本地化文件放在特定文件夹中,被描述为一种噩梦,但它确实支持带有(运行时)变量的文本。第二种解决方案不支持消息中的变量,但更易于使用。
第二种解决方案支持 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
调用后将它们添加到构造函数中。