【发布时间】:2013-08-07 20:01:28
【问题描述】:
我想问一个关于 GWT 中 i18n 的问题。
我有一个使用 UIBinding 的 Web 应用程序,我按照在线说明成功制作了 UIBinder i18n。 GWT编译器生成的属性放到一个目录下:
src/main/java/com/google/gwt/i18n/client/LocalizableResource_en.properties
src/main/java/com/google/gwt/i18n/client/LocalizableResource_de.properties
src/main/java/com/google/gwt/i18n/client/LocalizableResource_es.properties
因此,我可以通过在 URL 的查询字符串中指定“&locale=de”来在 Web 应用程序中切换语言。
这就是问题所在。我有一些其他字符串无法放入 UiBinder。它们是在运行时决定的,因此需要动态读取。例如,给定一个文件,我需要检查它的文件类型并以正确的语言显示文件类型并显示如下内容:
mytextfile.txt -> "TEXT"
“TEXT”一词需要根据语言进行更改。因为我从服务器获取文件并且可以是任何文件,所以我无法将“TEXT”静态绑定到任何翻译键中。
问题 1:如何在 UiBinder 中做到这一点?
我知道我可以在不使用 UIBinder 的情况下做到这一点。我可以使用扩展常量的类并创建 getter 方法来读取 i18n 属性文件。但是,问题是在上面的属性文件中,字符串键是一个 MD5 字符串。这是由 GWT 编译器生成的。对于那些不在 UiBinder 中的属性,没有与之等效的 MD5。如何将它们放在属性文件中?
我的属性文件会是这样的吗:
952D2C56D0485958336747BCDD98590D=Hello
Apology=Sorry
第一个属性在 UIBinder 中使用,第二个属性是动态使用的。
问题 2: 我有没有机会避免这种混合属性的混合方式?使用单独的属性文件或其他东西。
问题 3: 另一个问题是: 属性文件当前命名如上。这是因为网上有些资料说GWT会自动选取属性文件在:
com/google/gwt/i18n/client/
和文件名
LocalizableResource_xxxx.properties
我可以把这个属性文件放在 Maven 的标准资源目录中并告诉 GWT 在那里找到吗?
非常感谢。
【问题讨论】:
-
您是否阅读过有关 ConstantsWithLookup 的内容? gwtproject.org/doc/latest/…
标签: java gwt internationalization