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アプリケーションで非常に便利です。

コメントを残す 0

Your email address will not be published. Required fields are marked *