Eclipseプラグイン実践テクニック(1)
Eclipseプラグインを国際化しよう
Javaソースコードの国際化 |
次にJavaソースコード中に含まれる文字列の外部化を行いましょう。XMLエディタプラグインのソースコード中で外部化が必要なのはプリファレンスページのユーザーインターフェイスに表示される文字列(赤字になっている部分)です。
package jp.sf.amateras.xmleditor.preferences; |
これらの文字列をプロパティファイルに外部化していくわけですが、EclipseにはJavaソースコード中の文字列を外部化するための機能が用意されています。今回のように少量の文字列であれば手動で外部化を行っても大した手間ではありませんが、大量のソースコードに対してハードコードされた文字列を外部化する必要がある場合はこの機能を利用すると便利です。
文字列の外部化機能を使用するには外部化を行いたいファイルを選択し、メニューから[ソース]→[ストリングの外部化]を選択します。すると以下のようなウィザードが起動します。
図5 ストリングの外部化ウィザード |
ソースコード中で使用されている文字列が一覧表示されていますので、この中から外部化を行いたいもの、そうでないものを選択します。左端のアイコンの意味は以下のとおりです。また、キーはデフォルトでは0からの連番が振られていますが、後で分かりやすいように変更しておくとよいでしょう。
|
デフォルトでは外部化を行うファイルと同一パッケージにmessages.propertiesというプロパティファイルとそれを読み込むためのMessagesというクラスが作成され、Messages#getString()メソッドを用いて文字列を取得するようJavaソースコードの置換が行われます。このままでもよいのですが、Eclipseプラグインではプラグインクラスでプラグイン内のリソースを一括管理するのが慣習となっていますので、右下の[構成]ボタンをクリックして外部化の設定を以下のように変更します。
図6 アクセサー・クラスの構成 |
文字列の外部化を実行すると、以下のような内容のmessages.propertiesが生成されます。
XMLEditorPreferencePage.ColorTag=タグの色 |
また、XMLEditorPreferencePageのソースコードが以下のように修正されているはずです(赤字部分が文字列の外部化ウィザードによって変更・追加された部分です)。
protected void createFieldEditors() { |
この状態ではXMLEditorPluginクラスにgetString()メソッドが存在しないため、コンパイルエラーになっていることと思います。XMLEditorPluginクラスにgetString()メソッドを実装してみましょう。以下の赤字部分を追加します。
public class XMLEditorPlugin extends AbstractUIPlugin { |
以上で文字列の外部化は完了ですが、message.propertiesに日本語の文字列が記述された状態になってしまっています。やはり国際化をする以上、デフォルトでは最もユーザー数の多いと思われる英語で表示するようにすべきです。message.propertiesをmessage_ja.propertiesにリネームし、新たにmessage.propertiesを作成して英語の文字列を記述しておきましょう。
XMLEditorPreferencePage.ColorTag=Tag Color |
以上でマニフェストファイル同様、プリファレンスページのユーザーインターフェイスもロケールに応じて表示が切り替わるようになります。
|
||
図7 プリファレンスページのUIがロケールに応じて切り替わるようになった |
なお、ロケールによってきちんと表示が切り替わるかどうかを確認したい場合、ランタイム・ワークベンチを起動する際にプログラム引数に-nl en_USなどとしておくと指定したロケールでランタイム・ワークベンチを起動することができます。
図8 ランタイムワークベンチのロケールを指定 |
2/3 |
INDEX |
||
第1回 Eclipseプラグイン実践テクニック |
||
Page1 プラグインの国際化 |
||
Page2 Javaソースコードの国際化 |
||
Page3 フラグメントによる国際化 |
Java Solution全記事一覧 |
- 実運用の障害対応時間比較に見る、ログ管理基盤の効果 (2017/5/9)
ログ基盤の構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。今回は、実案件を事例とし、ログ管理基盤の有用性を、障害対応時間比較も交えて紹介 - Chatwork、LINE、Netflixが進めるリアクティブシステムとは何か (2017/4/27)
「リアクティブ」に関連する幾つかの用語について解説し、リアクティブシステムを実現するためのライブラリを紹介します - Fluentd+Elasticsearch+Kibanaで作るログ基盤の概要と構築方法 (2017/4/6)
ログ基盤を実現するFluentd+Elasticsearch+Kibanaについて、構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。初回は、ログ基盤の構築、利用方法について - プログラミングとビルド、Androidアプリ開発、Javaの基礎知識 (2017/4/3)
初心者が、Java言語を使ったAndroidのスマホアプリ開発を通じてプログラミングとは何かを学ぶ連載。初回は、プログラミングとビルド、Androidアプリ開発、Javaに関する基礎知識を解説する。
|
|