如果您有国家/地区代码US
,FR
(ISO-3166-1 alpha-2国家/地区代码),您如何获得区域设置代码(Locale.US
,{{1 }})做这样的事情:
Locale.FRANCE
答案 0 :(得分:16)
您不能,因为区域设置用于保存语言,而不是国家/地区。它可以为特定国家/地区以及该国家/地区的特定变体保留一种语言,但它首先是一种语言。语言和国家之间没有一对一的关系。大多数语言在不同的国家使用,许多国家都有多种语言。
如果您拥有某种语言的国家/地区代码,则可以使用new Locale(code)
。但是使用国家/地区代码,您只需拨打getAvailableLocales
,循环搜索结果,然后找到包含国家/地区代码的结果。但可能有几个。
答案 1 :(得分:3)
在Java7中有Locale.Builder
,但在此之前并没有简单的方法。但是,您可以创建实用程序方法:
Locale.getAvailableLocales()
locale.getCountryCode().equals(countryCodeParam)
并将其返回答案 2 :(得分:2)
您可以创建区域设置
new Locale("en", "US")
new Locale("fr", "FR")
或
遍历Locale.getAvailableLocales()
,直到找到您的语言环境,然后使用该实例。
答案 3 :(得分:2)
区域设置最重要的是由ISO-639语言代码指定,也可能是ISO-3166国家/地区代码和变体。 Locale
类具有构造函数,这些构造函数既可以使用语言代码,也可以使用国家代码,或者另外使用变体。
如果您只有国家/地区代码,则首先需要一张将其转换为语言代码的地图 - 但这并不一定会产生独特的结果,许多国家/地区都使用多种官方语言。