我可以将LocalizedResource.properties与uibinder一起使用。假设我有一个在java文件中以编程方式创建的小部件。如何从LocalizedResource.properties中读取键,具体取决于用户选择的语言“en,fr..etc”?
答案 0 :(得分:2)
@PaŭloEbermann
此方法不适用于GWT,因为GWT无法转换像Locale
和ResourceBUndle
这样的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)
很难说清楚。
如果您的LocalizedResource.properties按照“Internationalization - UiBinder”的描述生成,那么我不明白为什么要从中读取密钥
如果.properties是针对Message或Constant接口制作的,那么你可以通过http://*.html?locale = fr_CA读取* fr_CA.properties,以及任何你想要的语言。
有用的链接是Internationalizing GWT: Creating the translation for each language supported
或尝试 @UiTemplate 在为不同语言准备的模板之间切换。要查找当前的区域设置,您可以使用LocaleInfo.getLocaleName()
。
答案 2 :(得分:0)
我对GWT和UIBinder一无所知,但在“标准版”Java中,您将创建所选语言的ResourceBundle
(区域设置),然后使用其getString
方法。
Locale loc = ...;
String key = ...;
ResourceBundle bundle =
ResourceBundle.getBundle("LocalizedResource", loc);
String value = bundle.getString(key);
然后您可以使用此字符串标记您的小部件。
请尝试并报告GWT的成功。