以编程方式从LocalizedResource.properties读取键

时间:2011-02-05 07:35:55

标签: java gwt internationalization uibinder

我可以将LocalizedResource.properties与uibinder一起使用。假设我有一个在java文件中以编程方式创建的小部件。如何从LocalizedResource.properties中读取键,具体取决于用户选择的语言“en,fr..etc”?

3 个答案:

答案 0 :(得分:2)

@PaŭloEbermann

此方法不适用于GWT,因为GWT无法转换像LocaleResourceBUndle这样的java类  Locale loc = new Locale(LocaleInfo.getCurrentLocale().getLocaleName()); String key = "AnotherWord"; ResourceBundle bundle = ResourceBundle.getBundle("msgs", loc); 到JavaScript。

我只是尝试一下。

[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编译失败,带

{{1}}

如果我尝试使用java.util。*源代码提供GWT编译器,可能会有效。但我认为这不是一个好主意。为什么Google员工不遵循这种方式?

答案 1 :(得分:1)

很难说清楚。

  1. 如果您的LocalizedResource.properties按照“Internationalization - UiBinder”的描述生成,那么我不明白为什么要从中读取密钥

  2. 如果.properties是针对Message或Constant接口制作的,那么你可以通过http://*.html?locale = fr_CA读取* fr_CA.properties,以及任何你想要的语言。

    有用的链接是Internationalizing GWT: Creating the translation for each language supported

  3. 或尝试 @UiTemplate 在为不同语言准备的模板之间切换。要查找当前的区域设置,您可以使用LocaleInfo.getLocaleName()

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

答案 2 :(得分:0)

我对GWT和UIBinder一无所知,但在“标准版”Java中,您将创建所选语言的ResourceBundle(区域设置),然后使用其getString方法。

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

String value = bundle.getString(key);

然后您可以使用此字符串标记您的小部件。

请尝试并报告GWT的成功。