java - 避免使用.properties文件GNU Gettext Java

原文 标签 java internationalization gnu gettext po

首先,我的问题类似于这两个:
JAVA gettext commons
error reading .po file in java
我想使用gnu gettext实用程序来国际化我的应用程序。我通过使用正确的键值对创建一个translations.properties文件来让它工作,但是即使我显式地将locale设置为fr_ca或locale.canada_french,它也不会得到我的translations_fr_CA.properties。这是我的第一期。
第二个也是最重要的问题:我不能去掉.properties文件,因为我不能使用漂亮的gettext complete msgid。我设法用msgfmt --java2 [...]将.po文件编译成一个.class,但是如果没有.properties文件,ResourceBundle将无法加载。
这是我当前测试项目的压缩文件:java_gettext_testing.zip
我将gnu.gettext.gettextresource包含在zip中以使其更简单。您可以使用javac test/*.java编译并使用java test.test运行
谢谢你的帮助!

最佳答案

我终于明白了。我不知道为什么,但如果不把.class文件放在包中,我就不能使用它们。我重新设计了我的结构,最后我可以用

msgfmt --java2 -d . -r test.translations translations.po

它将编译./translations.po文件来测试/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 - 在GWT Web应用程序中使用外部对象到底需要什么

java - 如何为JFileChooser添加本地化,​​默认情况下不支持该语言环境?

php - PHP Web应用程序多语言结构的最佳实践

c++ - 链接时C ++未定义的引用

c - 如何正确引用GNU readline库来扫描终端输入?

java - 使用Spring时,如何抑制Checkstyle消息“实用程序类不应具有默认构造函数的公共”

java - 让Jsoup支持JavaScript动态生成的html

java - java.time.format.DateTimeFormatter.ISO_INSTANT的格式字符串?

mysql - 构建具有复杂内部化支持的站点

linux - BASH-将此脚本设置为定时/例行事件的最有效方法?