2011-07-02 2 views
16

あなたは国コードUSFRを(ISO-3166-1 alpha-2の国コード)がある場合、どのようにロケールコード(Locale.USLocale.FRANCE)を取得します:ISO国コード「US」、「FR」がある場合、ロケールコード( `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 € 

答えて

13

ロケールは国ではなく言語を保持するため使用できないため、できません。特定の国とその国の特定の言語の言語を保持することはできますが、まずそれが言語です。そして、言語と国との間には1対1の関係はありません。ほとんどの言語はさまざまな国で使用されていますが、多くの国では複数の言語が使用されています。

言語の国コードがある場合は、new Locale(code)を使用できます。しかし、国番号を入力してgetAvailableLocalesに電話し、結果をループして、国番号を持つコードを見つけてください。しかし、いくつかのものがあるかもしれません。

2

あなたはあなたのロケールを検索し、そのインスタンスを使用するまでLocale.getAvailableLocales()を通じてロケール、

new Locale("en", "US") 
new Locale("fr", "FR") 

または

反復処理を作成することができます。

1

Java7には​​がありますが、簡単な方法はありません。場合locale.getCountryCode().equals(countryCodeParam)各チェックのために

  1. ループLocale.getAvailableLocales()
  2. とロケールがまた、ISO-639言語コードで最も重要なことができ、指定された
2

それを返す:あなたは、しかし、ユーティリティメソッドを作成することができますISO-3166の国コードとバリアント。 Localeクラスには、言語コードだけでなく、さらには国コード、またはそれに加えてバリアントをとるコンストラクタがあります。

国コードだけを持っている場合は、まずそれを言語コードに変換するマップが必要ですが、必ずしもユニークな結果をもたらすわけではありません。

関連する問題