Javaのi18n – Javaにおける国際化
Javaにおける国際化、またはJavaのi18nは非常に重要な機能です。Javaはリソースバンドルを通じた国際化(i18n)サポートを提供しています。
Javaにおける国際化
アプリケーションを複数のロケールに対応させるためには、ロケールごとのプロパティファイルを作成する必要があります。ファイル名は、バンドル名に言語コードと国コードを付けたパターンに従います。例えば、ApplicationMessages_en_US.propertiesです。特定のロケール向けのプロパティファイルが準備できたら、正しいロケールでリソースバンドルを初期化するだけです。この目的には、Javaにはjava.util.ResourceBundleクラスとjava.util.Localeクラスの2つのクラスが用意されています。ResourceBundleは、ロケールごとのプロパティファイルを読み込み、任意のキーに対するロケールごとの値を取得できます。これは、Webアプリケーションのテキストをロケールごとに設定するのに非常に役立ちます。HTTPリクエストからロケール情報を取得し、そのロケールのリソースバンドルファイルを使用して動的なページを生成することができます。また、ユーザーにロケールを選択するオプションを提供し、ラベルを動的に更新することもできます。
Javaのi18nの例を教えてください。
Javaのi18nの例として、私は以下の画像のようなプロジェクトを作成しました。JavaInternationalizationExampleクラスのJavaコードは以下にあります。
package com.scdev.i18n;
import java.util.Locale;
import java.util.ResourceBundle;
public class JavaInternationalizationExample {
public static void main(String[] args) {
//default locale
ResourceBundle bundle = ResourceBundle.getBundle("ApplicationMessages");
//Get ResourceBundle with Locale that are already defined
ResourceBundle bundleFR = ResourceBundle.getBundle("ApplicationMessages", Locale.FRANCE);
//Get resource bundle when Locale needs to be created
ResourceBundle bundleSWE = ResourceBundle.getBundle("ApplicationMessages", new Locale("sv", "SE"));
//lets print some messages
printMessages(bundle);
printMessages(bundleFR);
printMessages(bundleSWE);
}
private static void printMessages(ResourceBundle bundle) {
System.out.println(bundle.getString("CountryName"));
System.out.println(bundle.getString("CurrencyCode"));
}
}
ここでのバンドル名は”ApplicationMessages”であり、2つのロケール固有のリソースバンドルと1つのデフォルトのリソースバンドルがあります。”ApplicationMessages.properties”です。
CountryName=USA
CurrencyCode=USD
ApplicationMessages_fr_FR.propertiesを日本語で自然に言い換えてください。1つのオプションだけで結構です。
CountryName=France
CurrencyCode=Euro
ApplicationMessages_sv_SE.propertiesを日本語に自然に言い換えると、次のようになります。
アプリケーションメッセージ_sv_SE.properties
CountryName=Sweden
CurrencyCode=Kr
Localeクラスの使用に注意してください。いくつかのロケールはすでに定義されていますが、常に言語コードと国コードをコンストラクタに渡すことで新しいロケールを作成することができます。上記のプログラムを実行すると、以下のような出力が得られます。
USA
USD
France
Euro
Sweden
Kr
それはクイックなJava i18nの例でした。 Javaの国際化は、ロケール固有の言語でページを提供するために、Webアプリケーションで非常に便利です。