如果您有ISO国家代码`US`,`FR`,您如何获得Locale代码(`Locale.US`,`Locale.FRANCE`)?

Pas*_*cal 20 java locale currency internationalization

如果有国家代码US,FR(ISO-3166-1 alpha-2国家代码),你怎么弄的地区代码(Locale.US,Locale.FRANCE)做这样的事情:

System.out.println(DecimalFormat.getCurrencyInstance(Locale.US).format(12.34));
System.out.println(DecimalFormat.getCurrencyInstance(Locale.FRANCE).format(12.34));

$12.34
12,34 €
Run Code Online (Sandbox Code Playgroud)

JB *_*zet 16

您不能,因为Locale用于保存语言,而不是国家/地区.它可以为特定国家/地区以及该国家/地区的特定变体保留一种语言,但它首先是一种语言.语言和国家之间没有一对一的关系.大多数语言在不同的国家使用,许多国家都有多种语言.

如果您有语言的国家/地区代码,则可以使用new Locale(code).但是使用国家/地区代码,您可以做的就是调用getAvailableLocales,循环搜索结果,找到包含国家/地区代码的结果.但可能有几个.


ald*_*rin 5

您可以创建区域设置,

new Locale("en", "US")
new Locale("fr", "FR")
Run Code Online (Sandbox Code Playgroud)

或者

迭代Locale.getAvailableLocales()直到找到您的区域设置,然后使用该实例。


Boz*_*zho 5

在 Java7 中有Locale.Builder,但在此之前没有简单的方法。但是,您可以创建一个实用程序方法:

  1. 环形 Locale.getAvailableLocales()
  2. 每次检查是否locale.getCountryCode().equals(countryCodeParam)并返回