←TopPage>eclipseで開発>リソースバンドル化
Javaで開発を行っていると、
「うーむこの文字リテラルは、リソースバンドルに しておいた方が、あとで 日本語化する時に便利だよな~」
なんて、思いながらも開発工数の短い中で、後回しになったまま、 結局、リソースバンドル化は、せずに英語メッセージのままに なっちゃうんですよね~*1
じゃじゃーん~ こういう時に、eclipseのリファクタリング機能のうちの「ストリングの外部化」 機能が出番です。
などが参考になります。
ここで「パッケージ・コンテキスト・メニューの Find Strings to Externalize」 なんてでてくるのですが、わんこの日本語化しちゃって環境では、メニューは 変わっちゃっているし、そもそも「パッケージ・コンテキスト・メニュー」 なんていうのが、どこにあるのか分からなくて、迷いました。
ソースを開いておいて、メニューの「ソース」→「ストリングの外部化」
なんですね~
さっそく起動してみると、ターゲットの.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で公開されている Unicodeエスケーププラグインと用意されていて、これを導入すると メニューの「編集」に「Unicode Escape/Unescape」が追加されて 何かできるらしいのだけど、いまだ使い方が分かってません。 どうやらプロパティファイルを編集するときに有効になるようです。 でも… わたしのHelloWorld_ja.propertiesでは有効じゃないぞ~
そろそろ、eclipseでJ2EE開発入門のページ「 J2EEみんとす 」は、如何でしょうか?
←TopPage>eclipseで開発>リソースバンドル化