使用 UiBinder 构建的 GWT 应用程序的本地化是否在托管模式下工作?它不适合我。这是我所做的:
1) 向 GWT 模块的 XML 添加了语言环境属性
< inherits name="com.google.gwt.i18n.I18N" / >
< extend-property name='locale' values='en'/>
< extend-property name='locale' values='ru'/>
< set-property-fallback name="locale" value="en"/>
2) 在 *.ui.xml 文件中用 , 标记消息
< ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
ui:generateFormat="com.google.gwt.i18n.rebind.format.PropertiesFormat"
ui:generateKeys="com.google.gwt.i18n.rebind.keygen.MD5KeyGenerator"
ui:generateLocales="default"
xmlns:g="urn:import:com.google.gwt.user.client.ui">
< g:HTMLPanel>
< ui:msg description="Hello Description">Hello!< /ui:msg>
< /g:HTMLPanel>
< /ui:UiBinder>
3) 添加了 GWT 编译器选项 -extra
4) 编译项目。在 extra 文件夹中找到后缀为 .GenMessages.properties 的文件。
5) 本地化生成的消息。将每个 .GenMessages.properties 文件复制到与相应 .ui.xml 文件相同的文件夹中。在文件名中用我的语言环境重命名它,例如 .GenMessages_en.properties .GenMessages_ru.properties
6) 重新编译项目。
7) 启动应用程序并更改 URL 中的语言环境变量以进行检查,例如 http://127.0.0.1:8888/TestLocale.html?gwt.codesvr=127.0.0.1:9997&locale=ru
它仍然显示资源的默认英文版本。
我错过了什么?我怎么调试它?日志或输出中没有任何内容。
我在 Windows 下,使用 IntelliJ IDEA 和 Chrome 作为浏览器。
谢谢!
更新:它没有用,因为我有额外的 < set-property name="locale" value="en"/ >
在模块配置中 :( 也许它覆盖了 extend-property
标签中的值。
我写了如何使它工作的分步说明 here 以防有人感兴趣。
最佳答案
默认情况下,GWT 生成以包名称开头的属性文件。您是否从文件名中删除了包?
在我的 GWT 项目中最适合我的一件事是使用 LocalizableResource_.properties 作为文件名并将它们全部保存在 com/google/gwt/i18n/client
包中。在 Localization with UiBinder 上查看 GWT 文档
关于java - 使用 UiBinder 构建的 GWT 应用程序的本地化在托管模式下不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8064371/