2011-02-05 54 views

回答

1

很難說清楚一些事情。

  1. 如果由「Internationalization - UiBinder」所以我不明白你爲什麼要在密鑰來讀取描述爲您生成LocalizedResource.properties它

  2. 如果消息或常量接口,這樣做的.properties你可以通過http://*.html?locale = fr_CA閱讀* fr_CA.properties,所以你想要的任何語言。

    有用的鏈路是Internationalizing GWT: Creating the translation for each language supported

  3. 或嘗試@UiTemplate到不同語言的製備tamplates之間切換。要找出當前的語言環境,您可以使用LocaleInfo.getLocaleName()

    有用的鏈接Apply different XML templates to the same widget

+0

因爲我沒有提到,如果編程方式我創建小部件,我需要直接在代碼而不是uibinder.xml中獲取.properties – cometta 2011-02-06 13:51:12

0

我不知道GWT和UiBinder的東西,但在「標準版」的Java,您將創建所選語言(區域)的ResourceBundle,然後用其getString方法。

Locale loc = ...; 
String key = ...; 
ResourceBundle bundle = 
    ResourceBundle.getBundle("LocalizedResource", loc); 

String value = bundle.getString(key); 

然後,您可以使用此字符串標記您的小部件。

請試試這個,並在GWT中報告成功。

2

@保羅Ebermann

此方法不適用於GWT工作,因爲GWT不能像LocaleResourceBUndle給JavaScript翻譯Java類。

我只是試一試。

Locale loc = new Locale(LocaleInfo.getCurrentLocale().getLocaleName()); 
String key = "AnotherWord"; 
ResourceBundle bundle = ResourceBundle.getBundle("msgs", loc); 

GWT編譯失敗,

[ERROR] Errors in 'file:/K:/programming/eclipse-workspace/polyglotte/src/com/mw/uibinder/client/Polyglotte.java' 
    [ERROR] Line 64: No source code is available for type java.util.Locale; did you forget to inherit a required module? 
    [ERROR] Line 67: No source code is available for type java.util.ResourceBundle; did you forget to inherit a required module? 

可能是,如果我嘗試喂GWT編譯器與java.util中它會工作。*的源代碼。但我認爲這不是個好主意。爲什麼Google員工不這樣做?

相關問題