如何从country
找到Locale-language
?
e.g;如果我将本地language
设置为en
,那么我希望US
为国家/地区。
Locale locale = new Locale("en");
locale.getCountry() // returns null
问题是我只有国家代码,例如:fr,de,en
,现在我只想从这些代码中找到正确的国家/地区代码。
答案 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)所指出的,对于许多种语言,有多个国家/地区。