2013年12月1日日曜日

javaのResourceBundleメモ

今更ながら初めてResourceBundleを使ってみる。
コードは変えずに、ファイルをロケールごとに用意しておけばいいっぽい。
ResourceBundle.Control使えばもっと色々できるみたいだけど、まずはこっちを試してみた。

まずは、読み込むPropertiesファイルを2つ用意する
sample.prpperties
name=taro
sample_ja_JP.properties
こちらは日本語用のファイル。
".properties"の前に_ja_JPを付けた名称にする。
name=太郎
このファイルは、native2asciiでユニコードに変換しておく。
native2ascii -encoding utf-8 sample.properties.ja.base sample_ja_JP.properties
変換すると以下のようになる。
name=\u592a\u90ce
これらのファイルをロケールを変えて読み込む。 getbundle()の引数でLocale指定もできるみたい。 読み込むときのファイル名は、.propertseや_ja_JPを外した完全修飾クラス名。
package test.bundle;
import java.util.Locale;
import java.util.ResourceBundle;


public class BundleTest {
    public static void main(String[] args) {
        // default(ja_JP)
        System.out.println(Locale.getDefault());
        ResourceBundle bundle1 = ResourceBundle.getBundle("test.bundle.sample");
        System.out.println(bundle1.getString("name"));
        // US
        Locale.setDefault(Locale.US);
        System.out.println(Locale.getDefault());
        ResourceBundle bundle2 = ResourceBundle.getBundle("test.bundle.sample");
        System.out.println(bundle2.getString("name"));    
    }
}
出力結果
ja_JP
太郎
en_US
taro

0 件のコメント:

コメントを投稿