0

有 Uibinder 做 i18n 的方式,如此处所述
然后有这个GWT i18n 的建议。

我正在考虑替代方案,因为我在第一个解决方案中遇到了一些问题。我想知道这两种方法的优缺点,所以我知道该选择什么。
请指教。

4

1 回答 1

4

第一个解决方案非常冗长,需要您将本地化文件放在特定文件夹中,被描述为一种噩梦,但它确实支持带有(运行时)变量的文本。第二种解决方案不支持消息中的变量,但更易于使用。

第二种解决方案支持 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调用后将它们添加到构造函数中。

于 2012-07-26T16:03:51.477 回答