问题描述
我在类路径中有三个资源文件:
I have three resource files in class path:
labels.properties:
labels.properties:
language = Default
labels_en.properties:
labels_en.properties:
language = English
labels_fr.properties:
labels_fr.properties:
language = French
有没有办法获得一个始终加载 labels.properties 的 ResourceBundle 对象,无论我的默认 Locale 是什么?
Is there a way to get a ResourceBundle object that always loads labels.properties NO MATTER what my default Locale is?
ResourceBundle.getBundle("labels") 返回与当前默认语言环境对应的那个(如预期的那样).
ResourceBundle.getBundle("labels") returns the one corresponding to the current default locale (as expected).
我能找到的唯一方法是将默认语言环境设置为不存在的语言环境,但这可能会破坏其他模块.
The only way I can find is to set the default locale to a non-existing locale, but this may break other modules.
谢谢!
Locale.setDefault( Locale.ENGLISH);
Assert.assertEquals( "English", ResourceBundle.getBundle( "labels").getString( "language"));
Locale.setDefault( Locale.FRENCH);
Assert.assertEquals( "French", ResourceBundle.getBundle( "labels").getString( "language"));
Assert.assertEquals( "French", ResourceBundle.getBundle( "labels", new Locale( "do-not-exist")).getString( "language"));
Locale.setDefault( new Locale( "do-not-exist"));
Assert.assertEquals( "Default", ResourceBundle.getBundle( "labels").getString( "language"));
推荐答案
你可以传入一个ResourceBundle.Control,无论请求的语言环境如何,始终只搜索根 ResourceBundle:
You can pass in a ResourceBundle.Control which, regardless of requested Locale, always searches only the root ResourceBundle:
ResourceBundle rootOnly = ResourceBundle.getBundle("labels",
new ResourceBundle.Control() {
@Override
public List<Locale> getCandidateLocales(String name,
Locale locale) {
return Collections.singletonList(Locale.ROOT);
}
});
这篇关于无论当前的默认语言环境如何,如何获取默认 ResourceBundle的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!


大气响应式网络建站服务公司织梦模板
高端大气html5设计公司网站源码
织梦dede网页模板下载素材销售下载站平台(带会员中心带筛选)
财税代理公司注册代理记账网站织梦模板(带手机端)
成人高考自考在职研究生教育机构网站源码(带手机端)
高端HTML5响应式企业集团通用类网站织梦模板(自适应手机端)