2004/02
Java APIリファレンスとか読んでると時々出てくる"Locale"って単語なんやねん?と
思ったことありませんか?なんとなく、国とか地域とかの意味なんだろうなーと
いうイメージはあるんだけど、実際どうつかうのかねぇ?ということで
今回はLocaleを使ってResourceBundleを切り替えてみたいと思います。
まずは、propertiesファイルを作成、
日本語、英語、フランス語の3種類を用意します。
[msg_ja.properties] 日本語用
↑
"こんにちわ"をnative2asciiでUnicode化
[msg_en.properties] 英語用
[msg_fr.properties] フランス語用
んではプログラムー!!
package etc; import java.util.ResourceBundle; import java.util.Locale; public class BundleAndLocaleSample { public static void main(String[] args) { //使えるロケールを表示 // Locale[] locals = Locale.getAvailableLocales(); // for (int i = 0; i < locals.length; i++) { // System.out.println(locals[i]); // } ResourceBundle defaultBundle = ResourceBundle.getBundle("msg"); String s = defaultBundle.getString("aisatsu"); System.out.println("デフォルト語=" + s); ResourceBundle japanBundle = ResourceBundle.getBundle("msg", Locale.JAPAN); s = japanBundle.getString("aisatsu"); System.out.println("日本語=" + s); ResourceBundle franceBundle = ResourceBundle.getBundle("msg", Locale.FRANCE); s = franceBundle.getString("aisatsu"); System.out.println("フランス語=" + s); ResourceBundle englishBundle = ResourceBundle.getBundle("msg", Locale.ENGLISH); s = englishBundle.getString("aisatsu"); System.out.println("英語=" + s); } }
[実行結果]
日本語=こんにちわ
フランス語=Bon Voyage
英語=Hello
つまり、
ResourceBundle.getBundle("msg", Locale.FRANCE);
って書くとmsg_fr.propertiesを読みに行く仕様のようですな!
ResourceBundle.getBundle(プロパティファイルの接頭辞, _XXのロケール);
ってわけ。
ResourceBundle.getBundle("msg");
って、Localeを指定しないとデフォルトのLocaleが日本だから
msg_jp.propertiesを読みにいったわけね。
ファイル名をmsg.propertiesにしても、読みにいきます。
ところで、Bon Voyageってこんにちわって意味なのかな?てきとーに
書いたもので、ガッハッハー!!!(風俗にいたバカ風)
あと、mainの冒頭でコメントアウトしてる部分のコメントはずすと
利用出来るLocaleが表示されます。ぜひ試してみてくださいな!
んじゃ
やまろう