←TopPage>[[eclipseで開発]]>リソースバンドル化
#navi([[eclipseで開発]])
*リソースバンドル化
#contents

**プロローグ
Javaで開発を行っていると、
 「うーむこの文字リテラルは、リソースバンドルに
 しておいた方が、あとで 日本語化する時に便利だよな~」
なんて、思いながらも開発工数の短い中で、後回しになったまま、
結局、リソースバンドル化は、せずに英語メッセージのままに
なっちゃうんですよね~((最近は、ソース上には日本語なんて出てこないユーザから遠いシステムの開発なので))

**eclipseのリファクタリング機能
じゃじゃーん~
こういう時に、eclipseのリファクタリング機能のうちの「ストリングの外部化」
機能が出番です。

-developerWorks:Eclipseプラグインの国際化対応 [[国際化対応のステップ:http://www-6.ibm.com/jp/developerworks/opensource/020823/j_os-i18n.html#3]]
-Eclipse開発メモ [[国際化:http://eclipse.boomboom.nu/?menu=i18n]]

などが参考になります。

ここで「パッケージ・コンテキスト・メニューの Find Strings to Externalize」
なんてでてくるのですが、わんこの日本語化しちゃって環境では、メニューは
変わっちゃっているし、そもそも「パッケージ・コンテキスト・メニュー」
なんていうのが、どこにあるのか分からなくて、迷いました。

ソースを開いておいて、メニューの「ソース」→「ストリングの外部化」
#ref(menu.jpg)
なんですね~


**「ストリングの外部化」を使ってみる
さっそく起動してみると、ターゲットの.javaファイルを聞いてくるので
選択して、あとは「次へ」を押していくと良い感じに進みます。
「プロパティ・ファイル名(E):」だけは、defaultでは、test.proparties
になるので、HelloWorld.properitesに換えてました。

最後に「オリジナルのファイル」と「リファクタリング後のファイル」の
比較が表示されるので、ここで何が変わったかしっかり確認しましょう。

で終わると、HelloWorld.javaが、こんな風になりました。
 public class HelloWorld {
   public static void main(String[] args) {
     System.out.println(Messages.getString("Hello_1")); //$NON-NLS-1$
   }
 }
これを利用するには、自動生成されたMessages.javaにBUNDLE_NAMEが"test"の
ままなので"HelloWorld"に治した
 import java.util.MissingResourceException;
 import java.util.ResourceBundle;
 
 public class Messages {
 
 	private static final String BUNDLE_NAME = "HelloWorld"; //$NON-NLS-1$
 
 	private static final ResourceBundle RESOURCE_BUNDLE =
 		ResourceBundle.getBundle(BUNDLE_NAME);
 
  	private Messages() {
 	}
 
 	public static String getString(String key) {
 		try {
 			return RESOURCE_BUNDLE.getString(key);
 		} catch (MissingResourceException e) {
 			return '!' + key + '!';
 		}
 	}
 }
と、プロパティファイルHelloWorld.properties
 Hello_1=Hello World
が必要です。

**日本語バンドル(ユニコードエンコーディングするなり)
日本語バンドルのファイル名はHelloWorld_ja.propertiesとします。
このファイルは、ユニコードエンコーディングする必要があります。
私は、native2asciiコマンドで変換しました。
 Hello_1=\u3053\u3093\u306b\u3061\u308f
と「こんにちは」と出るようにしてみました。

ユニコードエンコーディングへの変換は、[[eclipse用のplugin:http://graze.tripod.co.jp/plugin/]]で公開されている
Unicodeエスケーププラグインと用意されていて、これを導入すると
メニューの「編集」に「Unicode Escape/Unescape」が追加されて
何かできるらしいのだけど、いまだ使い方が分かってません。
どうやらプロパティファイルを編集するときに有効になるようです。
でも… わたしのHelloWorld_ja.propertiesでは有効じゃないぞ~ ;)

*次は
そろそろ、eclipseでJ2EE開発入門のページ「 [[J2EEみんとす>eclipseで開発/J2EE]] 」は、如何でしょうか?

[[←もくじに戻る>eclipseで開発#index]]

#navi([[eclipseで開発]])
←TopPage>[[eclipseで開発]]>リソースバンドル化

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS