Editionをインストールする。文字列を外部化するEclipseを使って文字列の外部化をする。やってみる無視とかをやってみるプレースホルダをつかうルールを考えてみる。Eclipseを使って文字列の外部化をする。†Eclipseは、ハードコーディングされた文字列を外部ファイル(*.properties)に外出しするというリファクタリングをすることができます。この機能を使って、Eclipseプラグインの文字列を外部化してみたいと思います。Eclipseで文字列を外部化する方法は2通りあります。通常の外部化の方法とはEclipseのフレームワークに依存しない外部化方法です。Eclipseプラグインの開発でない場合(通常のJava開発とかJ2EE開発とか)はこちらを使用します。Eclipseのストリング外部化機構を使用する方法Eclipseフレームワークに依存した方法で外部化します。Ecilpseプラグイン開発をしている場合は、こちらの方法を適用することもできます。今回はEclipseプラグイン開発なので、後者の方法でやってみました。"ふが2";}という二つのファイルをプラグイン内に作成しておきました。外部化するストリングの検索とすると、外部化できるストリングがあるソースコードの一覧がダイアログとしてあがります。Samples1.javaを選択し、外部化をクリックすると、以下のようなゴテゴテしたダイアログがあがります。今回は「Eclipseのストリング外部化機構」を使用するので、「Eclipseのストリング外部化機構を使用する」にチェックを入れます。その他の項目は以下の通りとしました。外部化する際のキー値に共通で指定する接頭文字。クラス名にしておきます。外部化したい文字列と、置換するキー値を指定します。Sample1_HOGE2としました。横にある各ボタンの意味は以下の通り。はずすもしくはなにもしないこの//$NON-NLS-1$は後述します。結局のところ以下のような状態になりました。あとは次へ次へで完成です。生成、変更されたソースコードは以下の通りです。Sample1_HOGE2;}以上で外部化が完了しました。いう文字列を使用したい箇所にはMessages.Sample1_HOGE1と書けばよいわけです。次に、Samples2クラスをやってみます。先のダイアログでSamples2.javaを選択し、ゴテゴテしたダイアログを出します。そこで「ふが2」に対して、無視を選択し、次へ次へで終了します。生成されたコードは以下の通りです。以後、外部化をやってもこれは無視されます。無視されちゃうと、やっぱり外部化しようと思ったときにちょっと困るわけですが、どうもプロジェクトを選択して全体で外部化文字列を探すと無視されちゃうけど、明示的にそのソースを選択して外部化をすると、一応出てくるみたいです。したダイアログでフィルタをかけて非表示にすることもできるみたいですね。これは国際化とかするときにむちゃくちゃ便利そうです。自分らでStringを外部化しよーってゴリゴリやるのはアホくさいけど、これならやる気になりますねえ。外部化文字列にはプレースホルダを使用することができます。Pluginクラスに以下のメソッドを追加します。System.out.println(foo);}この文字列を外部化します。さんが追加されました。上のメソッドはfooが外部化されましたが、さらに以下のようにプレースホルダを使用するよう変更しました。}));}テストクラスを作って、このメソッドを呼び出してみます。実行結果は以下の通り。さんたしかに{0},{1}が置換されました。書いてて思ったんですが、これ別に外部化の話と関係なかったですね。↑ルールを考えてみる。†さてキー値はルールを考えておいた方が良さそうです。messages.propertiesはパッケージ毎に作成するMessages.javaはパッケージ内で共有化されるから、キー値は「クラス名_任意」としておくくらいですかね。Eclipseのソースをちょこっと見てみましたが、Eclipseも上の考え方でやってるところと、とくに接頭文字を指定してないところ両方あるみたいです。プラグインの国際化とかを考えると、Pluginクラス*1のディレクトリに一個おいて、プラグイン内全てで共有するってやり方もあるみたいですね。