1

我在 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使用正确的属性文件?

谢谢

4

2 回答 2

1

返回的语言环境getAvailableLocales()不是很重要,因为您可以像以前那样创建新的语言环境:new Locale( "gd", "GB").

Locale java docs 中所述,locale 的主要目的是识别资源:资源包、数字格式等。标识 的字符串Locale甚至在创建时都没有经过验证。

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

于 2012-08-21T19:44:08.590 回答
0

服务器需要安装该字符集语言才能加载它,我想您可以在提供页面时“强制”它,但是您需要专门从用户那里获取信息作为分配该页面语言的请求。

于 2012-08-21T19:44:33.913 回答