首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >[i18n]将资源包加载到类路径之外

[i18n]将资源包加载到类路径之外
EN

Stack Overflow用户
提问于 2016-08-08 00:21:46
回答 2查看 581关注 0票数 0

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

代码语言:javascript
复制
MyProject
    |
     - src
       |
        -com
         |
          -company
             |
              -UI
              -launcher
              -resources
                   |
                    -i18n.properties
                    -i18n_en_US.properties
                    -i18n_es_ES.properties
                    -i18n_zh_CN.properties

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

代码语言:javascript
复制
bundle = ResourceBundle.getBundle(baseName,localeInSettings);

我已经看到了答案,但不是很清楚。当我找到一些东西时,我会与所有人分享,并让它变得更清晰。

EN

回答 2

Stack Overflow用户

发布于 2016-08-08 00:24:55

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

代码语言:javascript
复制
com.company.resources.i18n
票数 0
EN

Stack Overflow用户

发布于 2016-08-08 00:27:19

正如实验证明的那样,这两种形式都有效:

代码语言:javascript
复制
com/WindThunderStudio/resources/i18n

和,

代码语言:javascript
复制
com.WindThunderStudio.resources.i18n

首先,它不同于加载普通的属性文件,在完整的路径之前,你不需要用"/“来标注你的绝对路径。

其次,第一种形式如我们所期望的那样工作,因为baseName需要“全限定名”,即带有".“的路径。作为第二种形式,我们可以引用ResourceBundle的JavaDoc页面

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38816150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档