Javaで言語ごとに表示文字列を切り替えて多言語対応をする方法

Javaで多言語対応をする方法

Javaで多言語対応をするには、ResourceBundle クラスとプロパティファイルを使用するのが一般的な方法です。
以下の手順で多言語対応を実装できます。

ステップ1: プロパティファイルを作成する

1. 各言語ごとにプロパティファイルを作成します。
例えば、英語(en)と日本語(ja)のファイルを作成します。

MessagesBundle_en.properties

greeting = Hello
farewell = Goodbye

MessagesBundle_ja.properties

greeting = こんにちは
farewell = さようなら

ステップ2: ResourceBundleを使用してプロパティファイルを読み込む

Javaのコード内で、ResourceBundle クラスを使って適切なプロパティファイルを読み込みます。

import java.util.Locale;
import java.util.ResourceBundle;

public class MultiLanguageSupport {

    public static void main(String[] args) {
        // ロケールを指定
        Locale enLocale = new Locale("en", "US");
        Locale jaLocale = new Locale("ja", "JP");

        // ResourceBundleを取得
        ResourceBundle enBundle = ResourceBundle.getBundle("MessagesBundle", enLocale);
        ResourceBundle jaBundle = ResourceBundle.getBundle("MessagesBundle", jaLocale);

        // メッセージを表示
        System.out.println("English: ");
        System.out.println(enBundle.getString("greeting"));
        System.out.println(enBundle.getString("farewell"));

        System.out.println("\nJapanese: ");
        System.out.println(jaBundle.getString("greeting"));
        System.out.println(jaBundle.getString("farewell"));
    }
}

出力結果としては、以下のように表示されます。

English:
Hello
Goodbye

Japanese:
こんにちは
さようなら

多言語サイトはURLパラメータ等で言語を出し分けするのがよくあるパターンであり、ロケールについてはそのパラメータから取得するのが良いでしょう。

まとめ

  • プロパティファイルを各言語ごとに作成する。
  • ResourceBundleを使ってプロパティファイルを読み込む。

この方法を使うことで、Javaアプリケーションで多言語対応が容易に実現できます。
ResourceBundle.Controlクラスを拡張すれば、propertiesファイルではなくxmlファイルをリソースファイルとして使用することもできます。
プロパティファイルで十分だと思いますが、プロジェクトによってはxmlで管理するのも良いでしょう。