6. ロケール/プロパティ/リソースバンドル
この章ではJavaの特徴の1つである「国際化対応」において、中心的な役割を果たす「ロケール」「プロパティ」「リソースバンドル」について説明します。
6.1. ロケール
ロケールとは言語を共有する区域の事で、Javaでは「java.util.Locale」クラスを利用して管理されています。ロケールが違えば使用言語はもちろんの事、「数字」「日付」「通貨」などの表記法も異なってきます。したがってアプリケーションを全世界に対応させるためには、エラーメッセージなどの文言を1つずつ変えていかなければなりません。そういった言語依存の部分を容易に実装できる仕組をJavaは提供しているのですが、その仕組の鍵となる区域情報を管理するのがLocaleクラスです。
ロケールはJava内部では
(言語コード2桁)_(国コード2桁)_(付加情報)
という形式で管理されています(国コード、付加情報は省略される場合があります)。例えばアメリカの場合は、言語コード「en」国コード「US」を組み合わせて「en_US」となります。イタリアで通貨としてユーロを基本とする場合には、「it_IT_EURO」となります(リラの場合は「it_IT」)。日本は「ja_JP」です。なお言語コードはISO-639、国コードはISO-3166に従っています。付加情報はJava独自のものです。
さてLocaleには引数が1つのものから3つのものまで3種類のコンストラクタがあり、それぞれ「言語コードのみ」「言語コードと国コード」「3種類全て」に対応しています。しかし通常はコンストラクタからLocaleインスタンスを作成する事は無く、Localeクラスに定数として定義されているものを使用するか、「getDefault」メソッドの返り値(デフォルトロケール)を使用するかのいずれかです。
以下はデフォルトロケールの国名および言語名を表示するサンプルプログラムです。
import java.util.Locale; ... Locale defaultLocale = Locale.getDefault(); System.out.println(defaultLocale.getDisplayCountry()); System.out.println(defaultLocale.getDisplayLanguage());
他に、利用可能なロケール一覧を返す「getAvailableLocales」メソッド、デフォルトロケールを設定する「setLocale」メソッドなどがあります。
(実習課題1)
以下のアプリケーションを作成する事。
- 利用可能なロケールの言語名・国名一覧を表示する。