Java在WAR内部加载ResourceBundle,其中包含几个带有ResourceBundle的jar

时间:2016-11-08 16:52:20

标签: java maven internationalization resourcebundle

我有一个名为API的java项目,它有自己的ResourceBundle,因为它知道用户的语言,并且响应是根据其语言编写的。 测试工作正常,我看到正确写的消息。

当我想在另一个项目中使用API​​项目的jar时,我们称之为REST_API,它没有从API中找到任何密钥。

REST_API拥有自己的语言密钥,因此最终的捆绑文件应该包含捆绑包。正确?

我使用maven来制造罐子,战争等。 是否有任何扫描项目的maven插件,并合并资源包文件以使其工作?

或者我应该以不同的方式实现它?

谢谢!

更新

API项目中的资源位于:

   src/main/resources/ApplicationMessages_en.properties 
   src/main/resources/ApplicationMessages_es.properties

以下是我如何加载包的示例:

   private static final String DEFAULT_LANG = "en";
   private static final Locale DEFAULT_LOCALE = new Locale(DEFAULT_LANG);
   private static final ResourceBundle DEFAULT_TRANSL = ResourceBundle.getBundle("ApplicationMessages", DEFAULT_LOCALE, new UTF8Control());

1 个答案:

答案 0 :(得分:0)

资源文件放在资源文件夹中的包中:

src/main/resources/my.package.api.lang.ApplicationMessages_en.properties
src/main/resources/my.package.api.lang.ApplicationMessages_es.properties

在REST API项目中:

src/main/resources/my.package.api.rest.lang.ApplicationMessages_en.properties
src/main/resources/my.package.api.rest.lang.ApplicationMessages_es.properties

要加载这些文件:

// lang = "es" || "en"
// bundleName = "my.package.api.lang.ApplicationMessages"
// bundleName = "my.package.api.rest.lang.ApplicationMessages"
final Locale locale = new Locale(lang);
ResourceBundle translator = ResourceBundle.getBundle(bundleName, locale);

谢谢!