正方形の周長 #19
PropertiesControlを使ってみる。
以下の三つのプロパティファイルを用意する。
messages.properties
1 = message 1 2 = message 2 3 = message 3
messages_ja.properties (UTF-8)
1 = めっせーじ1 2 = めっせーじ2
messages_ja_JP.properties (UTF-8)
1 = メッセージ1
まず、PropertiesControlを使わず、getBundleメソッドのデフォルトの振る舞いに任せてみる。
...snip ResourceBundle rb = ResourceBundle.getBundle("messages"); for (String key : rb.keySet()) System.out.printf("\"%s\" = \"%s\"%n", key, rb.getString(key)); ...snip
基底名がmessagesであるようなリソースバンドルに含まれる全てのキーとそれに対応する文字列を表示させる。
デフォルト動作だと例えばコマンドプロンプト上で実行すると、
"3" = "message 3" "2" = "?????£????????????" "1" = "????????≫?????,???"
プロパティファイルがUnicodeエスケープされていないため、当然日本語メッセージが化ける。
次に、PropertiesControlのインスタンスを与えると、
...snip ResourceBundle rb = ResourceBundle.getBundle("messages", new PropertiesControl()); ...snip
"3" = "message 3" "2" = "めっせーじ2" "1" = "メッセージ1"
メッセージが化けることはなく、
また、リソースの親子関係に従って、子にないリソースは親から補完されている。