【问题标题】:Java load ResourceBundle inside WAR that contains several jar with their ResourceBundleJava 在 WAR 中加载 ResourceBundle,其中包含几个带有 ResourceBundle 的 jar
【发布时间】:2017-03-22 09:35:11
【问题描述】:

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

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

REST_API 有它自己的语言键,所以最终的包文件应该有包的合并。对吧?

我正在使用 maven 来构建 jar、wars 等。 是否有任何 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());

【问题讨论】:

  • 资源应该通过类路径加载,所以这应该不是问题?如果您使用 API 项目内部另一个项目,您是否有正确的依赖关系?你的项目看起来如何? maven pom 的?
  • 我只是在 POM 文件中有一个 mvn 依赖项。像这样:<dependency> <groupId>grId</groupId> <artifactId>prAPI</artifactId> <version>${pr.version}</version> </dependency>
  • 如果您对两个捆绑包使用相同的名称,那么不,它们不会被合并。将使用在类路径中找到的第一个。就像上课一样。资源包应该在包中,就像类一样。
  • 好的,尼泽特。我会试试的。 bundle的包在src/main/resources文件夹里吧?
  • 尼泽,这行得通。谢谢!

标签: java maven internationalization resourcebundle


【解决方案1】:

资源文件被放置在资源文件夹内的一个包中:

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);

谢谢!

【讨论】:

    猜你喜欢
    • 2012-11-15
    • 1970-01-01
    • 1970-01-01
    • 2021-03-12
    • 1970-01-01
    • 2013-08-31
    • 2018-08-31
    • 2011-03-24
    • 2011-07-18
    相关资源
    最近更新 更多