今更ながら初めてResourceBundleを使ってみる。
コードは変えずに、ファイルをロケールごとに用意しておけばいいっぽい。
ResourceBundle.Control使えばもっと色々できるみたいだけど、まずはこっちを試してみた。
コードは変えずに、ファイルをロケールごとに用意しておけばいいっぽい。
ResourceBundle.Control使えばもっと色々できるみたいだけど、まずはこっちを試してみた。
まずは、読み込むPropertiesファイルを2つ用意する
sample.prpperties
sample.prpperties
name=taro
sample_ja_JP.properties
こちらは日本語用のファイル。
".properties"の前に_ja_JPを付けた名称にする。
こちらは日本語用のファイル。
".properties"の前に_ja_JPを付けた名称にする。
name=太郎
このファイルは、native2asciiでユニコードに変換しておく。
native2ascii -encoding utf-8 sample.properties.ja.base sample_ja_JP.properties
変換すると以下のようになる。
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 件のコメント:
コメントを投稿