Javaファイル内の多言語化対応で、任意の文字列を埋め込む。

Javaファイル内の多言語化対応については

https://hacknote.jp/archives/1588/

に詳しく記述がありますが、定義した文字列に任意の文字列を埋め込んで使いたい時がよくあります。

たとえば「○○様をグループ××へと追加しました」というメールの文章を多言語化対応しようとして、○○と××にはそのつど対応する文字列を挿入したいとします。

もちろん次のソースように、「様をグループ」と「へと追加しました」とをべつべつに登録しておいて、java側でつなげてもいいですが、なんだかスマートではありません。

    StringBuffer text = new StringBuffer();
    text.append(userName);//○○
    text.append(ALLocalizationUtils.getl10n("MAIL_TEXT1"));//「様をグループ」
    text.append(groupName);//××
    text.append(ALLocalizationUtils.getl10n("MAIL_TEXT2"));//「へと追加しました」

そこで、propertirsファイルでの定義を次のようにします。

MAIL_TEXT={0}様をグループ{1}へと追加しました

文字列を埋め込みたい箇所、すなわち○○と××の部分をそれぞれ{0}と{1}にしました。

このように定義したら、javaで呼び出す際には次のようにします。

ALLocalizationUtils.getl10n("MAIL_TEXT", userName, groupName);

すると、{0}にuserNameが、{1}にgroupNameが挿入された状態の文字列を得ることができます。

もし挿入したい文字列の数を変えたい時は、「ALLocalizationUtils.getl10n(“MAIL_TEXT”,」の後に続く変数の数を適宜変更していく必要があります。