我想问一个与 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 在那里找到?
非常感谢。