如何从语言中获取本地国家/地区?

时间:2013-09-05 11:00:38

标签: java localization internationalization

如何从country找到Locale-language

e.g;如果我将本地language设置为en,那么我希望US为国家/地区。

Locale locale = new Locale("en");
locale.getCountry() // returns null

问题是我只有国家代码,例如:fr,de,en,现在我只想从这些代码中找到正确的国家/地区代码。

3 个答案:

答案 0 :(得分:4)

en是英文。 en_US是美国英语。我认为en_GB是英国英语。大概使用en_US会做你想要的。这里列出了所有受支持的区域设置:http://www.oracle.com/technetwork/java/javase/locales-137662.html

您无法从“en”获取国家/地区,因为您可以看到,多个国家/地区可能会共享一种语言。你会选哪一个?

答案 1 :(得分:1)

一种选择是获得所有可用的语言环境:

Locale[] locales = Locale.getAvailableLocales();

然后将其插入HashMap并将language定义为key。现在可以通过语言键搜索国家。

答案 2 :(得分:0)

Apache Commons Lang为此提供了一种方法: LocaleUtils#countriesByLanguage(String)

您可以在每个返回的Locale上调用getCountry()以获取国家/地区代码。正如埃里克(Eric)所指出的,对于许多种语言,有多个国家/地区。