[i18n]从类路径中加载资源包

时间:2016-08-07 16:21:46

标签: java internationalization resourcebundle

我正在尝试从我的项目的类路径以外的某个文件夹加载.properties文件,以便加载ResourceBundle国际化。我有这样的结构:

MyProject
    |
     - src
       |
        -com
         |
          -company
             |
              -UI
              -launcher
              -resources
                   |
                    -i18n.properties
                    -i18n_en_US.properties
                    -i18n_es_ES.properties
                    -i18n_zh_CN.properties

显然,将所有i18n个文件放在与src文件夹相同的级别更清晰。那么,我该如何加载它们呢?更准确地说,在加载我的资源包的行中,我该如何放置baseName部分?

bundle = ResourceBundle.getBundle(baseName,localeInSettings);

我已经看到了答案,但不太清楚。当我找到一些东西时,我会与所有人分享并使其更清晰。

2 个答案:

答案 0 :(得分:0)

它仍然在类路径中。只是不在默认包中。所以基本名称应该是

com.company.resources.i18n

答案 1 :(得分:0)

实验证明,这两种形式都有效:

com/WindThunderStudio/resources/i18n

com.WindThunderStudio.resources.i18n

首先,它与加载普通属性文件不同,在完整路径之前,您没有注意到带有“/”的绝对路径。

其次,第一个表单的工作方式与我们预期的一样,因为baseName需要“完全限定名称”,即带有“。”的路径。作为第二种形式,我们可以引用ResourceBundle的JavaDoc页面:

  

注意:baseName参数应该是完全限定的类名。但是,为了与早期版本兼容,Sun的Java SE运行时环境不会对此进行验证,因此可以通过指定路径名(使用“/”)而不是完全限定的类名(使用“。”)来访问PropertyResourceBundles。