java - 避免 .properties 文件 GNU Gettext java

标签 java internationalization gnu gettext po

首先,我的问题与那两个类似:

JAVA gettext commons

error reading .po file in java

  • 我想使用 GNU Gettext 实用程序来国际化我的应用程序。我设法通过使用正确的键值对创建 translations.properties 文件来让它工作,但它不会得到我的 translations_fr_CA.properties 即使我明确地将语言环境设置为fr_CA 或 Locale.CANADA_FRENCH。这是我的第一期。

  • 第二个也是最重要的问题:我无法摆脱 .properties 文件,它是垃圾,因为我不能使用漂亮的 gettext complete msgid。我设法使用 msgfmt --java2 [...] 将我的 .po 文件编译为 .class,但是如果没有 .properties 文件,ResourceBundle 将无法加载。

这是我当前测试项目的压缩文件:java_gettext_testing.zip

我在 zip 中包含了 gnu.gettext.GettextResource 以使其更简单。您可以使用 javac test/*.java 进行编译并使用 java test.test

运行

感谢您的帮助!

最佳答案

我终于明白了。我不知道为什么,但我不能在不将它们放入包中的情况下使用 .class 文件。我修改了我的结构,最后我可以用

编译我的 .po 文件
msgfmt --java2 -d . -r test.translations translations.po

这会将 ./translations.po 文件编译为 test/translations.class,并为其提供适当的包信息。

现在我可以做到了

ResourceBundle myRes = ResourceBundle.getBundle("test.translations"); // load my test/translations.class file

GettextResource.gettext(myRes, "message id to translate");

仍然需要让语言环境正常工作,但我现在已经掌握了基本要素。

编辑 这个问题帮助我理解了 msgfmt 正在将 .po 文件编译成“真正的”Java 对象 How to use ResourceBundle

关于java - 避免 .properties 文件 GNU Gettext java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21188667/

相关文章:

java - 在 pageObject 类中设置 WebDriver,然后在测试用例中调用它

html - 如何本地化html5 meta标签信息

java - Spring LocaleResolver 链接

function - gnu并行无法识别用户定义的函数

iphone - 警告 : Parse Issue: Use of GNU old-style field designator extension

java - makefile 多目标模式。停止

java - RichFaces:单击取消按钮时清除必填字段

java - 需要 json 解析方面的帮助

java - 如何更快地编写 Java 代码

java - 资源包默认为父消息