Java-i18n-resourcebundle

提供:Dev Guides
移動先:案内検索

Java内部化-ResourceBundleクラス

ResourceBundleクラスは、ロケールに依存するテキストとオブジェクトを保存するために使用されます。 通常、プロパティファイルを使用してロケール固有のテキストを保存し、ResourceBundleオブジェクトを使用してそれらを表します。 Javaベースのアプリケーションでロケール固有のプロパティファイルを使用する手順は次のとおりです。

手順1:プロパティファイルを作成します。

英語ロケールのプロパティファイルが必要だとします。 次に、プロパティファイル名XXX_en_US.propertiesを作成します。XXXはファイルの名前で、en_USはEnglish(US)のロケールを表します。

Messages_en_US.properties

message=Welcome to finddevguides.COM!

フランス語ロケールのプロパティファイルを作成しましょう。 次に、プロパティファイル名XXX_fr_FR.propertiesを作成します。XXXはファイルの名前で、fr_FRはフランス語(フランス)のロケールを表します。

Messages_fr_FR.properties

message=Bienvenue sur finddevguides.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 finddevguides.COM!
Message in fr_FR: Bienvenue sur finddevguides.COM!

命名規則に関する注意

以下は、プロパティファイルの命名規則です。

  • デフォルトロケールにマッピングされたプロパティファイルの場合、プレフィックスは必須ではありません。 message_en_US.propertiesは、message.propertiesと同等です。
  • ロケールにマップされたプロパティファイルの場合、プレフィックスは2つの方法で添付できます。 message_fr.propertiesは、message_fr_FR.propertiesと同等です。

link:/cgi-bin/printpage.cgi [__印刷]