【コラム】

OS X ハッキング!

127 オレ流ローカライズのススメ(2)

    海上忍  [2005/03/14]

    今月10日から独逸はハノーバーにて開催中の国際見本市「CeBIT 2005」。筆者も数年前に取材で訪れたことがありますが、その会場となるハノーバーメッセの広いことといったら。3日間歩き回ったら、足がパンパンにむくみ革靴を履けなくなってしまいました。今年もiPod shuffleのソックリさんが展示されるなど楽しげではありますが…… 今度はキックスケート持参で行こうかしらん。

    さて、今回は前回に続きアプリケーションをローカライズする手順について。前回はnibtoolコマンドでローカライズ可能な文字列を抜き出し、Xcodeで編集するところまで解説したので、今回はそのファイルを利用して日本語リソースを生成するところから始めてみよう。

    日本語リソースを作成する

    ローカライズ用リソースファイル(temp.strings)は、ローカライズ対象の文字列を抜き出したときと同じnibtoolコマンドを利用すると、新しいnibファイルとして書き出せる。ローカライズ用リソースファイルは、いわば既存のnibファイルに対する差分として機能するわけだ。

    以下に示すコマンド実行例では、はじめに日本語リソース用のディレクトリ(Japanese.lproj)を作成し、そこへオリジナルファイル(English.lproj/MainMenu.nib)にtemp.stringsを反映させる形で新しいnibファイルを作成している。これでとりあえずは、日本語化されたコマンドメニューやパネルを表示できるようになるはずなので、iTunesのスクリプトメニューから「Import with LAME...」を選択し、メニューに日本語が表示されることを確認してほしい。

    なお、ローカライズの出来不出来はすなわち邦訳の良し悪しだ。「Select All」が「すべてを選択」、「Preferences...」が「環境設定」、といったお決まりのフレーズが存在するものはともかく、アプリケーション固有のメッセージにどのような邦訳をあてるかは作業者の技量次第といえる。iTunes-LAMEのように小さいパネルを使用するアプリケーションの場合、パネルからはみ出してしまうため長い文字列を使えないという問題もある。このあたりは、他のアプリケーションを参考にしつつ経験を重ねるほかないだろう。

    文字列テーブルを参照してローカライズ後のnibファイルを作成する

    $ mkdir Japanese.lproj
    $ nibtool -d temp.strings -w Japanese.lproj/MainMenu.nib English.lproj/MainMenu.nib

    文字列テーブルも忘れずに

    nibファイルのほかにも、メッセージなどの文字列情報を置き替える「文字列テーブル」の編集が必要。テーブル名のデフォルトは「Localizable」とされるため、ソースコードの段階で特に指定がない場合には、その文字列テーブルが定義された「Localizable.strings」がローカライズの対象となる。

    題材として取りあげているiTunes-LAMEの文字列テーブルも、ファイル名は「Localizable.strings」となっている。このファイルをひな型となる英語用リソース領域(English.lproj)から日本語用リソース領域(Japanese.lproj)へコピーし、前掲のローカライズ用リソースファイル(temp.strings)と同じ要領で定義内容を書き換え、上書き保存すれば作業は完了。訳さえ問題なければ、これで"オレ流"ローカライズは一応の完了となる。

    $ cp English.lproj/Localizable.strings Japanese.lproj/
    $ open Japanese.lproj/Localizable.strings

    nibtoolコマンド

    ここで、nibtoolコマンドについて少しばかり補足を。ごく簡単なローカライズには、ローカライズ可能な文字列を書き出す「-L」、ローカライズ用リソースファイルを指定する「-d」、更新するnibファイルを指定する「-w」で十分だが、ほかにも多数のオプションが存在する。他の用例については、「man nibtool」で表示されるオンラインマニュアルが参考になるはずだ。

    nibtoolコマンドの主要なオプション

    オプション 機能
    -8 入出力の文字コードにUTF-8を使用する(初期値はUTF-16)
    -a すべてのオブジェクトや階層構造を標準出力へ書き出す
    -L ローカライズ可能な文字列を標準出力へ書き出す
    -R 入出力の文字コードにMacOSRomanを使用する
    -W nibファイルを更新する(既に存在する場合は上書き)
    -w nibファイルを更新する(上書きしない)
    -d ローカライズ用リソースファイルを指定する

    新着記事

    特設サイトの情報

      人気記事

      一覧

      イチオシ記事

      新着記事

      特別企画

      マイナビニュースマガジン