8 java locale resourcebundle internationalization
我在类路径中有三个资源文件:
labels.properties:
language = Default
Run Code Online (Sandbox Code Playgroud)
labels_en.properties:
language = English
Run Code Online (Sandbox Code Playgroud)
labels_fr.properties:
language = French
Run Code Online (Sandbox Code Playgroud)
有没有办法让一个ResourceBundle总是加载labels.propertiesNO MATTER 的对象我的默认值Locale是什么?
ResourceBundle.getBundle("labels") 返回与当前默认语言环境对应的一个(如预期的那样).
我能找到的唯一方法是将默认语言环境设置为不存在的语言环境,但这可能会破坏其他模块.
谢谢!
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"));
Run Code Online (Sandbox Code Playgroud)
VGR*_*VGR 11
您可以传入ResourceBundle.Control,无论请求的Locale如何,它始终只搜索根ResourceBundle:
ResourceBundle rootOnly = ResourceBundle.getBundle("labels",
new ResourceBundle.Control() {
@Override
public List<Locale> getCandidateLocales(String name,
Locale locale) {
return Collections.singletonList(Locale.ROOT);
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12233 次 |
| 最近记录: |