GNUStepを日本語化する方法

 私のUNIXはNeXT(正確に言えばOPENSTEP for Mach)が最初だった関係で、Workspaceの操作性に慣れていることから、UNIX系OSではWindowMaker+GNUStepという環境を構築している。

 GNUStepの国際化はだいぶ進んできており、日本語フォントを指定すれば日本語を表示もできるし、XIM経由で入力もできる。

 ただ、ロケールを日本にしても、リソースがないのでメニューやらメッセージが日本語にならない。私の知る限り、日本語のリソースが最初から用意されているのは、Jishyo.appくらいである。 (ちなみにOpenBSDだとリソースを用意しても、ロケールが切り替わらないという問題がある。全体的にOpenBSDの国際化はFreeBSDNetBSDLinuxに比べて劣っている。)

 こうなると、自分でリソースを作成することになる。

 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/の中に置けば、日本語化することができる。