GNUStepを日本語化する方法
私のUNIXはNeXT(正確に言えばOPENSTEP for Mach)が最初だった関係で、Workspaceの操作性に慣れていることから、UNIX系OSではWindowMaker+GNUStepという環境を構築している。
GNUStepの国際化はだいぶ進んできており、日本語フォントを指定すれば日本語を表示もできるし、XIM経由で入力もできる。
ただ、ロケールを日本にしても、リソースがないのでメニューやらメッセージが日本語にならない。私の知る限り、日本語のリソースが最初から用意されているのは、Jishyo.appくらいである。 (ちなみにOpenBSDだとリソースを用意しても、ロケールが切り替わらないという問題がある。全体的にOpenBSDの国際化はFreeBSDやNetBSD、Linuxに比べて劣っている。)
こうなると、自分でリソースを作成することになる。
GNUStepの用意している国際化方法はUNIX向けソフトウェアで広く用いられるgettextと異なり、次の三つの方法がある。
- Resource/Japanese.lproj/Localizable.stringsを作成する。
- Resource/Japanese.lproj/*.nibを作成する。
- Resource/Japanese.lproj/*.gormを作成する。
最初の二つはNeXTから引き継いだ方法で、最後のgormの書き換えはGNUstep特有の方法である。nibやgormの場合はIBやGORMで直接書き換えることになる。ただ、nibやgormにメッセージをべた書きするのは推奨されておらず、行儀が悪いプログラムとされる。そのため、一般にLocalizable.stringsだけでローカライズできるように設計することが求められる。
つい先日、GNUMail向けにLocalizabsle.stringsを作成した(http://savannah.nongnu.org/support/?109386)ので紹介する。
まず、ソースコードからLocalizabsle.stringsの元を作成する。ソースコード(*.m)があるディレクトリーにて、次のコマンドを実行する。
% make_strings -L English *.m
ここでできたLocalizabsle.stringsの書式は、
"Yes" = "Yes";
というように左に元のメッセージ、右にローカライズしたメッセージを書く形となっている。したがって、メッセージを日本語にするには、
"Yes" = "はい";
というように書き換えればよい。これをアプリケーションのResource/Japanese.lproj/の中に置けば、日本語化することができる。