Javaの内部化-ResourceBundleクラス
ResourceBundleクラスは、ロケールに依存するテキストとオブジェクトを格納するために使用されます。通常、プロパティファイルを使用してロケール固有のテキストを保存し、ResourceBundleオブジェクトを使用してそれらを表します。以下は、Javaベースのアプリケーションでロケール固有のプロパティファイルを使用する手順です。
ステップ1:プロパティファイルを作成します。
英語ロケールのプロパティファイルが必要だとします。次に、プロパティファイル名XXX_en_US.propertiesを作成します。ここで、XXXはファイルの名前であり、en_USは英語(US)のロケールを表します。
Messages_en_US.properties
message=Welcome to TutorialsPoint.COM!
次に、フランス語ロケールのプロパティファイルを作成しましょう。次に、プロパティファイル名XXX_fr_FR.propertiesを作成します。ここで、XXXはファイルの名前であり、fr_FRはフランス語(フランス)のロケールを表します。
Messages_fr_FR.properties
message=Bienvenue sur TutorialsPoint.COM!
ここで、キーは同じですが、値は両方のプロパティファイルでロケール固有であることがわかります。
ステップ2:ResourceBundleオブジェクトを作成する
次の構文を使用して、プロパティファイル名とロケールでResourceBundleオブジェクトを作成します。
ResourceBundle bundle = ResourceBundle.getBundle("Messages", Locale.US);
手順3:ResourceBundleオブジェクトから値を取得します。
キーを渡して、ResourceBundleオブジェクトから値を取得します。
String value = bundle.getString("message");
例
次の例は、ResourceBundleオブジェクトを使用して、プロパティファイルからロケール固有の値を表示する方法を示しています。
IOTester.java
import java.util.Locale;
import java.util.ResourceBundle;
public class I18NTester {
public static void main(String[] args) {
ResourceBundle bundle = ResourceBundle.getBundle("Messages", Locale.US);
System.out.println("Message in "+Locale.US +": "+bundle.getString("message"));
bundle = ResourceBundle.getBundle("Messages", Locale.FRANCE);
System.out.println("Message in "+Locale.FRANCE +": "+bundle.getString("message"));
}
}
出力
次の結果が出力されます。
Message in en_US: Welcome to TutorialsPoint.COM!
Message in fr_FR: Bienvenue sur TutorialsPoint.COM!
命名規則に関する注記
プロパティファイルの命名規則は次のとおりです。
デフォルトのロケールにマップされたプロパティファイルの場合、プレフィックスは必須ではありません。message_en_US.propertiesはmessage.propertiesと同等です。
ロケールにマップされたプロパティファイルの場合、プレフィックスは2つの方法で添付できます。message_fr.propertiesは、message_fr_FR.propertiesと同等です。