尝试使用ResourceBundle从外部文件中获取消息

时间:2010-04-05 21:24:37

标签: java internationalization

基本上我想在我的应用程序中的jar文件外部有一个messages.properties文件。因此,如果我的翻译错误,用户可以轻松添加语言和编辑文件

目前我使用

ResourceBundle.getBundle("package.MessageBundle");

但我想做这样的事情

ResourceBundle.getBundle("lang/MessageBundle");

其中lang是我的应用程序安装目录下的文件夹。

  1. 这是一个好主意(如果没有,为什么不呢?)
  2. 有人可以指出我正确的方向,或者一些示例代码吗
  3. 感谢

    亚历

2 个答案:

答案 0 :(得分:3)

将其放在类路径覆盖的现有路径中的其他位置,或将其路径添加到类路径中。这样您就可以以相同的方式访问它,而是在外部维护它。

答案 1 :(得分:0)

ResourceBundle的工作方式是您传递给getBundle的参数是“basename”。此基本名称将以您正在使用的语言环境为后缀,例如MessageBundle_en.propertiesMessageBundle_fr.properties。如果您希望系统默认使用不同的区域设置,则将区域设置作为getBundle()的附加参数传递。

所以你最终得到的是一个目录中的多个语言文件,而不是每种语言的目录。

所以而不是

ResourceBundle.getBundle("lang/MessageBundle");
你会做的

ResourceBundle.getBundle("MessageBundle", locale); // locale corresponds to "lang"

我想你可以通过在基本名称前添加语言名称来做到这一点,但是你会失去ResourceBundle为你开箱即用的大部分功能。

“外化”部分在很大程度上是不相关的,因为ResourceBundle在类路径下运行,无论是内部(例如JAR文件)还是外部(例如目录),它都可以工作。