Java ResourceBundle更改为默认语言

时间:2012-08-21 18:32:31

标签: java internationalization resourcebundle

我在Java中创建了以下ResourceBundle,它从正确的MessegesBundle_en_GB.properties文件中读取:

ResourceBundle labels = 
        ResourceBundle.getBundle("MessegesBundle",new Locale( "en", "GB"));
labels.getString("Test");

然而,当我尝试使用另一种语言(苏格兰盖尔语)时,它只是默认返回到en_GB

ResourceBundle labels = 
        ResourceBundle.getBundle("MessegesBundle",new Locale( "gd", "GB"));
system.out.println(labels.getLocale()); // returns en-GB
labels.getString("Test");

不会显示Locale.getAvailableLocales();和“gd”中的可用区域设置列表。

这是否意味着我不能将ResourceBundle用于I18N,或者是否有办法添加盖尔语或强制ResourceBundle使用正确的属性文件?

由于

2 个答案:

答案 0 :(得分:1)

getAvailableLocales()返回的区域设置不是很重要,因为您可以按照以下方式创建新区域:new Locale( "gd", "GB")

Locale java文档中所述,语言环境的主要目的是识别资源:资源包,数字格式等。标识Locale的字符串甚至在创建时都不会被验证。

我的猜测是你没有类路径中可用的MessegesBundle_gd_GB.properties资源。

答案 1 :(得分:0)

服务器需要安装该charset语言来加载它,我想你可以“强制”它但是在服务页面时你需要从用户那里获取特定信息作为对该页面语言的请求分配