获取系统语言并与ResourceBundle一起使用

时间:2012-07-02 19:17:12

标签: java localization locale resourcebundle

我如何获得系统的当前语言并将其用于ResourceBundle?

假设客户端的机器是用日语运行的,那么我希望我的应用程序切换到日语,如果该语言文件不可用,它应该有一个后备解决方案。

我知道我可以使用ResourceBundle,但是如何完成上述设置?

ResourceBundle bundle = ResourceBundle.getBundle("lang", new Locale("jp", "JP"));

2 个答案:

答案 0 :(得分:1)

资源包会自动尝试系统的当前语言,然后回退到默认值(如果不存在)(ResourceBundle.getBundle("lang")将按以下顺序搜索,假设系统语言为jp_JPlang_jp_JP.properties - > land_jp.properties - > lang.properties)。您可以查看ResourceBundle用于解析名称here

的过程

答案 1 :(得分:0)

来自http://java.sun.com/developer/technicalArticles/Intl/ResourceBundles/

  

对于产品的每种语言翻译,您都会创建一个新的   初始资源包的版本。例如,如果您创建   MyResource存储所有英文文本,你将创建一个类似的   命名文件来存储法语文本。资源包使用命名   区分潜在的众多版本的约定   基本上是相同的捆绑。每个包名称都包含一个基本名称   和可选的区域设置标识符。这两件作品一起独一无二   识别包中的包。

     

使用上面的示例,应该是法语版本的资源   名为MyResource_fr_FR。加拿大法语版本应该是   MyResource_fr_CA。

     

有效地将语言环境名称附加到包的基本名称   将捆绑包的用法链接到特定区域设置。 当你要求的时候   使用ResourceBundle.getBundle(“MyResource”)捆绑getBundle   方法将默认语言环境标识符附加到基本名称和   加载相应的包。如果语言环境是fr_CA,则调用   ResourceBundle.getBundle(“MyResource”)将加载MyResource_fr_CA   束。