Joh*_*ide 4 java gnu gettext internationalization po
首先,我的问题类似于这两个问题:
我想使用GNU Gettext实用程序对我的应用程序进行国际化。我设法通过创建translations.properties具有适当键值对的文件来使其工作,但是translations_fr_CA.properties即使我将语言环境显式设置为fr_CA或Locale.CANADA_FRENCH,也无法正常工作。这是我的第一个问题。
第二个也是最重要的问题:由于无法使用漂亮的gettext complete msgid,因此我无法摆脱被废话的.properties文件。我设法将.po文件编译为.class,msgfmt --java2 [...]但是ResourceBundle没有.properties文件将无法加载。
这是我当前测试项目的zip文件:java_gettext_testing.zip
我将zip中包含gnu.gettext.GettextResource简化了。您可以编译javac test/*.java并运行java test.test
谢谢你的帮助!
我终于想通了。我不知道为什么,但是我不能使用.class文件而不将它们放在包中。我重新设计了结构,最后可以用
msgfmt --java2 -d . -r test.translations translations.po
Run Code Online (Sandbox Code Playgroud)
它将将./translations.po文件编译为test / translations.class并为其提供适当的软件包信息。
现在我可以做到这一点
ResourceBundle myRes = ResourceBundle.getBundle("test.translations"); // load my test/translations.class file
GettextResource.gettext(myRes, "message id to translate");
Run Code Online (Sandbox Code Playgroud)
仍然必须使语言环境正常工作,但现在对我来说至关重要。
编辑这个问题帮助我了解到msgfmt正在将.po文件编译为“真实” java对象。如何使用ResourceBundle
| 归档时间: |
|
| 查看次数: |
1066 次 |
| 最近记录: |