Java – ResourceBundleの例
java.util.ResourceBundleは、国際化(複数の言語)に使用されるライブラリです。 システムに設定されたデフォルトのロケールに従ってメッセージを返すことができます。 このような機能は、世界中で使用されるシステムを開発するときに使用されます。
1. 使い方?
ライブラリは、プロパティの命名に使用されるロケールと名前のサフィックスに基づいてプロパティファイルを読み取ります。 たとえば、MyLabels_en_US.propertiesという名前のラベルファイルについて考えてみます。 このファイルは、ロケールがUS-Englishを表すen_USに設定されている場合、ResourceBundleユーティリティによって読み取られます。
ロケールは、属性を持つ地域または場所を表します。 ロケールは通常、アプリケーションを使用するクライアントに関する詳細を維持するために使用されます。 ロケールには、それぞれの場所で使用される場所と言語の属性が含まれます。 したがって、ロケールは、ユーザーが属する場所を判別することにより、ResourceBundleが正しいラベルファイルを選択するのを支援します。
2. 例
トピックをさらに明確にするために、以下の例を参照してください。
MyLabels_en_US.properties
how_are_you = How are you?
MyLabels_ms_MY.properties
how_are_you = apa khabar
Application.java
package com.example;
import java.util.Locale;
import java.util.ResourceBundle;
public class Application {
public static void main(String[] args) {
// en_US
System.out.println("Current Locale: " + Locale.getDefault());
ResourceBundle mybundle = ResourceBundle.getBundle("MyLabels");
// read MyLabels_en_US.properties
System.out.println("Say how are you in US English: " + mybundle.getString("how_are_you"));
Locale.setDefault(new Locale("ms", "MY"));
// read MyLabels_ms_MY.properties
System.out.println("Current Locale: " + Locale.getDefault());
mybundle = ResourceBundle.getBundle("MyLabels");
System.out.println("Say how are you in Malaysian Malaya language: " + mybundle.getString("how_are_you"));
}
}
このコードを実行すると、次の出力が得られます。
Current Locale: en_US Say how are you in US English: How are you? Current Locale: ms_MY Say how are you in Malaysian Malaya language: apa khabar
ロケールセットに設定されたデフォルト値に応じて、出力で確認できます。 このユーティリティは主に、Webブラウザがリモートユーザーのロケールを知るのに役立つWebアプリケーションで使用されます。 これにより、可能な限り特定の言語でWebサイトを表示することができます。