将I18N文件放入没有Web-Inf文件夹的实用程序JAR中



我正在创建一个水平模块,该模块充当所有垂直产品的知识库。我独立地构建了我的代码库的罐子,所有这些垂直产品都消耗了。每种验证产品都可以在应用程序服务器上部署并可以充当Web应用程序。

我的实用程序罐有一个API类。每当用户创建此类的对象时,语言环境就会被接受为构造函数的参数。我很少有例外消息需要进行本地化,因为这些例外已显示在GUI上。根据该语言环境,我加载捆绑包以获取本地消息。

我无法理解我在罐子里放置i18n文件的地方,因为它没有Web-Inf,并且只是一个实用罐子。还有如何在战争文件中复制这些I18N文件?

加载一个消息捆绑包,您可以致电:

ResourceBundle.getBundle(baseName, locale, loader);

Javadoc中指定的:

... GetBundle尝试找到属性资源文件。它通过替换所有"来生成候选捆绑包名称的路径名。字符具有"/"并附加字符串" .properties"。它试图使用classLoader.getResource

找到此名称的"资源"

因此,主要的是您的捆绑包在classloader上可见。

您可以在项目中创建一个软件包,例如资源,然后将捆绑包在其中。假设您的捆绑名称为 mycomponent.properties basename应为: resource.mycomponent

此软件包的内容似乎像I18N文件的列表:

  • mycomponent.properties(这是未指定语言环境时的错误捆绑包)
  • mycomponent_en.properties
  • mycomponent_it.properties
  • ...

此软件包分布在您的罐子中。使用您的组件的Web模块在其Web-Inf lib(或应用程序服务器的共享文件夹中)和I18N异常消息中都有您的JAR。

相关内容

最新更新