Mac OS X appのローカライズ。

iComptaという、ファイナンス管理のアプリケーションをローカライズ(日本語化)し終えた。

ローカライズといっても、全体の80%くらいであるから、ある場面で英語が出てくるかもしれない。残りの20%は、そこまでしなくても通常使用に支障がないか、そもそも翻訳できないか、どちらかを理由として訳さなかったものだ。

昨日の夜、iComptaの開発者にローカライズファイルの公開の是非を尋ねたところ、快諾いただいたので、別ページで公開することとする。

Lion以降の、OS X appのローカライズ

最近のOS X appはローカライズしづらい。Snow Leopard以前 *1であれば、nibファイルをダブルクリックするだけでInterface Builderが立ち上がり、簡単に日本語に書き換えられたアプリケーションが多くあった。
最近のnibファイルは、compiled nib *2といってバイナリ化されたものであるから、簡単にローカライズすることができない。keyedobjects.nibを使ってInterface Builderで開けるようにし、無理矢理ローカライズすることもできるが *3、nibファイルの構成を書き換えてしまうので、特定の画面が開かなくなったり、app自体が起動しなくなったりと、散々な結果をもたらすことになる。

compiled nibのローカライズ方法

Localizable.stringsでできる範囲が広がればと、iComptaに限らず、様々なappのローカライズを半ば諦めていたところ、バイナリ化されたcompiled nibをテキスト化するplutilコマンドがあることを知った。nibファイルのあるディレクトリで、次のコマンドを入力すると、テキストエディタで編集できるようになる。

plutil -convert xml1 (ファイル名).nib
元のバイナリ化されたnibに戻すには、次のようにすればいい。ちなみに、バイナリ化しなくてもそのままファイルを使うことができる。
plutil -convert binary1 (ファイル名).nib

plutilコマンドで、compiled nibはバイナリファイルからxmlファイルとなる。こうなれば、ローカライズは簡単だ。しかし、いざローカライズを始めようとしても、どの文字を書き換えるべきか、一見するとわからない。
stringタグで囲まれている文字列のうち、それらしい語を見つけて書き換えるしかないが、もしかしたらいい方法があるのかもしれない。私は知らないけれども。

ちなみに、それらしい語の中で、SystemClear MenuText Cellは書き換えるとウインドウがおかしくなるので、もしこの記事を読んでやろうとする人は、気をつけるように。

Appleの日本語

ここからは余談である。

Appleの日本語はたいへん厄介なものだ。典型的な事例をあげれば、“Window”は「ウインドウ」、“Preference”は「環境設定」、“Paste”は「ペースト」となる一方で、“Import”は「読み込む」となる。OS Xを何気なく使っているとあまり気にすることはないが、ローカライズをするとなると神経質にならなければならない *4

参考書は無い。独学しかない。しかし、字引きは持っていた方がいい。OS Xの言語リソースを引き出すSystem Stringsが、Mac App Storeで販売されているので、気になる人は購入するといい。その他、困ったときは、Google検索で「site:support.apple.com」と入力するように、Appleのサポートページを調べるといい。Appleのサポートページは、たいてい英語と日本語の両方が用意されているから、重宝する。注意すべき点として、古いページでは訳語にぶれが見られる。なるだけ更新日が新しいものを見るように。

*1:compiled nibはSnow Leopardから多く見られるようになったので、現実的にはLeopard以前。

*2:アイコンが白紙であるから、白紙nibとも言われている。

*3:手間を省くために、D&DすればInterface Builderで開けるようにするNibUnlockerというアプリケーションも公開されている。

*4:この記事を読めば、Appleルールの多さを知ることができる。