私のアプリには外部プロセスから文字列が供給されています。各文字列は 2 文字または 5 文字の長さで、java.util.Locale
s を表します。例えば:
en-us
コ
最初の例は 5 文字の文字列で、"en" は ISO 言語コード、"us" は ISO 国コードです。これは、「en_US」ロケールに対応している必要があります。2 番目の例は 2 文字の文字列のみで、"ko" は ISO 言語コードであり、"ko_KR" (韓国語) ロケールに対応する必要があります。
これらの文字列 (2 文字または 5 文字のいずれか) を取得し、それを (サポートされている Java 6ロケールとして) 検証し、それを使用して Locale インスタンスを作成する方法が必要です。
Locale にこのような検証が最初から組み込まれていることを願っていましたが、残念ながら、このコードは例外がスローされることなく実行されます。
Locale loc = new Locale("waawaaweewah", "greatsuccess");
// Prints: "waawaaweewah"
System.out.println(loc.getDisplayLanguage());
だから私は、これらの文字列が私に与えられる2つの形式を考えて、どうすればいいですか:
- 文字列 (両方の形式) を検証し、存在しないかサポートされていない Java 6 ロケールに対応する文字列に対して例外をスローします。と
- 文字列から新しいロケールをインスタンス化しますか? この質問は、「ko」しかなく、「ko_KR」ロケールなどにマップする必要がある 2 文字の形式に実際に当てはまります。
前もって感謝します!