FrontPage

はじめに

Javaの開発環境のデファクトスタンダードになりつつあるEclipseですが、日本でも爆発的な普及をみせています。理由は色々ありますが、その一つとしてユーザにより便利なプラグインが沢山提供され、簡単に機能拡張を行えることがあげられます。また、Eclipse内部は国際化されており、海外の開発者が作成したプラグインでも殆どの場合日本語環境で利用できることも普及に拍車をかけていると言えるでしょう。

しかし、海外で開発されたプラグインの殆どはメッセージが英語であり、非常に便利なプラグインでも日本の低スキル開発者にとっては若干導入の敷居が高いことも多々あります。日本語でメッセージを表示するようにするためには、英語のメッセージを日本語化してパッチとして開発者にフィードバックする必要がありますが、Eclipseの普及の度合いに比べると開発者達へのフィードバックは十分には行われていないように思います。

ここでは、プラグインのメッセージを日本語で表示するようにする方法について紹介します。できるだけ初心者のJavaプログラマーでも読めるように書いています。この記事を読んで一人でも多くの開発者が日本語メッセージをプラグインの開発者へフィードバックできるようになればと思います。

リソースバンドル

まずJava国際化の基礎知識としてリソースバンドルについて紹介します。既にリソースバンドルについてご存知の方はこの章は読み飛ばしてください。

Javaはリソースバンドルと呼ばれる仕組みによって、言語環境によってメッセージを切り換えるしくみがあります。Eclipseでもメッセージの国際化にこのリソースバンドルが利用されています。次の例でみてみましょう。

RBTest.java

import java.util.*;

public class RBTest {
    public static void main(String[] args){ 
	ResourceBundle rb = ResourceBundle.getBundle("messages");
	String i18nHello = rb.getString("hello");
	System.out.println(i18nHello);
    }
}

messages.properties

hello=Hello World!!

messages_ja.properties

hello=\u3053\u3093\u306b\u3061\u306f\u4e16\u754c\uff01

リソースバンドルでは、メッセージをプロパティファイル(*.properties)で定義します。messages.propertiesはデフォルトの言語のメッセージで通常英語で記述します。messages_ja.propertiesは日本語のメッセージを記述します。"_ja"はJapaneseの頭文字で日本語のメッセージを表すことを示します。*_xx.propertiesは通常、unicodeエスケープ形式で記述されます。unicodeとは、文字を表示する文字コードの一つで、文字コードとしては、例えばWindowsだとShift_JIS、LinuxだとEUC_JPと呼ばれる文字コードがテキストファイルで通常使われています。プロパティファイルではunicodeの文字のコードに\uを先頭につけて表現したunicodeエスケープ形式が利用されます。プロパティファイルは、native2asciiコマンドを-reverseオプションを付けて実行することにより、OS固有の文字コードで記述されたファイルに変換することができます。例えば次のようになります。

>C:\j2sdk1.4.2_08\bin\natvie2ascii.exe -reverse messages_ja.properties messages_ja_sjis.properties
>type messages_ja_sjis.properties
こんにちは世界!

逆にOS固有の文字コードで書かれたファイルをunicodeエスケープ形式に変換するには次のようにします。

>C:\j2sdk1.4.2_08\bin\natvie2ascii.exe -reverse messages_ja.properties messages_ja.properties
>type messages_ja.properties
\u3053\u3093\u306b\u3061\u306f\u4e16\u754c\uff01

最初に紹介したRBTest.java、messages.properties、messages_ja.proprtiesを同じディレクトリにおいて実行すると、次のように表示されます。

> java RBTest
こんにちは世界!

英語環境では、実は次のように表示されます。日本語環境下で強制的に英語環境でJavaが動作するようにするには、-Duser.language=enオプションを付けます。

> java -Duser.language=en RBTest
Hello World!

さて、これでJavaとEclipseの国際化の基本が理解できたと思います。

Eclipseプラグインの国際化

さて、リソースバンドルが理解できればあとは簡単です。メッセージが記述されたプロパティファイルを日本語に訳してunicodeエスケープ形式に変換すればよいことが容易に想像できるでしょう。メニューに関するメッセージは、プラグインのトップディレクトリのplugin.properitesファイルに記述されていることが多いので、このファイルをplugin_ja_sjis.propertiesにコピーしてメッセージを日本語化してnative2asciiを利用してunicodeエスケープ形式に変換し、plugin_ja.propertiesを作成すればokです。ビュー中のメッセージについては、個別のプロパティファイルに格納されていることが多いので、jarファイルの中からメッセージが書かれているプロパティファイルを探して同様にして*_ja.propertiesファイルを作成し、元通りjarに固めればokです。メッセージを訳してもうまく日本語化されない場合は、

> eclipse.exe -clean

と-cleanオプションをつけて再起動すると日本語になることがあります。

リソースバンドルの和訳に便利なプラグイン

ResourceBundle Editorプラグイン

リソースバンドルを編集するとき、OS固有の文字コードとunicodeエスケープの変換が面倒なことがあります。また、英語と日本語を比較しながらメッセージを和訳したいこともあるでしょう。ResourceBundle? Editorプラグインを利用すると、英語と日本語を比べながら和訳でき、また、unicodeエスケープへの変換も自動的に行ってくれ便利です。

CVSから取得したプラグインのソースコードをビルド/実行

Javaプロジェクトとしてインポート後、プロジェクトのプロパティ->「Javaのビルド・パス」を選択し、「Libraries」タブでAdd Libraryを押し、「プラグイン依存関係」を選択します。

実行するには、Eclipseメニューの「実行」->「実行as」を選択し、ランタイム・ワークベンチを選択し、ランタイムワークベンチを起動します。すると、プロジェクトのJavaプラグインが有効になった状態で起動されます。

開発者へのフィードバック

作成した日本語メッセージは開発者へフィードバックしましょう。プラグインのページやプラグインの中身を探せば開発者の連絡先がわかるはずです。開発者にメールで翻訳したプロパティファイルを送って取り込んでもらいましょう。プロジェクトがSourceForge?やJava.NETなどを利用している場合は、バグ追跡システムにパッチを登録しても良いでしょう。

さらなる日本語化

プラグインによっては、リソースバンドルを利用せずにメッセージを処理しているものもあります。そのような場合、リソースバンドルに対応したコードに書き直す必要があります。Eclipseプラグインの国際化についての詳細は、DwのEclipseプラグインの国際化対応をおよびください。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-10-19 (火) 21:21:36 (2411d)