2012-07-26 48 views
0

還有Uibinder的做法,如上所述做i18n here
然後對GWT i18n有this的建議。uibinder的替代方案I18n

我在考慮替代方案,因爲我遇到了第一個解決方案的一些問題。 我想知道這兩種方法的優點和缺點,所以我知道該選什麼。
請指教。

回答

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,在標籤內的文本會是默認文本,說明位於描述屬性中。在第二種解決方案中,您可以將其添加到接口類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調用後總是回退以將其添加到您的構造函數中。

+1

當您在消息中包含小部件時,UiBinder I18N真正發光,例如'作爲一個,我想,這樣 .'。使用'ui:baseMessagesInterface',這是一個噩夢,遠遠沒有像所謂的「解決方案2」那麼簡單。 – 2012-07-26 16:55:38