あなたの nib ファイルに各国語化の準備を整える


Mac OS X のネイティブ統合開発環境(IDE)は、Xcode、Interface Builder、そしてビルド、デバッグ、性能計測ツールの一式から構成されます。

開発者は、彼らのアプリケーションのためのユーザインタフェースを作成するために Interface Builder を使用します。Interface Builder は、これらのインタフェースを nib ファイルと呼ばれる XML アーカイブとして保存します。

あなたは、ちょうど画像や音声ファイルを各国語化するのと同じように、nib ファイルを各国語化することができます。

nib ファイルは、ウインドウやダイアログ、そしてボタンやスライダ、テキストオブジェクトといったユーザインタフェース要素、さらにこれらの要素のためのヘルプタグを含んだ、あなたのアプリケーションのユーザインタフェースを記録しています。

また、nib ファイルは、ユーザがコントロールを活性化したときに行われるための動作を引き起こす、これらのオブジェクトの間の接続【connections】も保持しています。

注:このセクションでは、Interface Builder およびその nib ファイルについてお話します。けれども、議論の多くは、他のツールで作成した、各国語化されたユーザインタフェースアーカイブにも適用することができます。

効率的に nib ファイルを使用する

翻訳者は、一般的にはユーザインタフェースの各部の各国語化をすべて一度に行い、文字列の長さの変化に配慮するために画像要素を調整します。

中規模から大規模のアプリケーションにおいては、各ウインドウやパネル(つまり、ダイアログ)を、それぞれ独自の nib ファイルに配置するのは、普通はよい案といえるでしょう。

この習慣は、ユーザインタフェースの読み込みを遅延させる(つまり、使用されるのに応じて部品ごとに読み込む)ことが可能となるだけではなく、各国語化をより段階的な手順で進めることも可能にします。

また、アプリケーションのメニューを独立した nib ファイルに置くのも良い考えでしょう。

翻訳者は、nib ファイルを各国語化するために、Interface Builder、AppleGlot、nibtool の組み合わせが使えます。

これらのツールを用いることで、翻訳者は与えられた言語.lproj ディレクトリ内で nib ファイルを開き、文字列を各国語化し、ユーザインタフェース要素の大きさを新しい文字列に合わせて変更し、変更結果を nib ファイルに保存しなおします。

この他にも注意すべき点がいくつかあります…

  • nib ファイル内のオブジェクトは、一般的に、これらの間に壊してはならない接続を持っています。あなたの nib ファイルの翻訳に着手する前に、確実にすべての接続をロック【"Editing" ペインの "Lock all connections (Cocoa Only)"をチェック】(Interface Builder 環境設定のオプションの一つ)しておきましょう。
  • ダイアログとウインドウは、通常、インスペクタを通じて指定される、最小の大きさと最大の大きさを持っています。もし、与えられた言語のためにダイアログやウインドウを広くする必要があれば、翻訳者は最小の大きさも適切な値へと確実に更新されていることを確認すべきです。
  • いくつかのユーザインタフェースオブジェクトは、ヘルプタグ―ユーザがマウス【ポインタ】をそのオブジェクト上に短い期間、移動させたときに現れる説明文―に対応しています。あなたはオブジェクトに対するヘルプタグを Interface Builder のインスペクタの中で定義することができ、翻訳者はこれらの文字列も各国語化することができます。

あなたの nib ファイルにおいて、各国語化によってあなたのウインドウ内に見えているテキストの大きさが変化することも十分ありえる、ということを覚えておくことも大切です。

もしテキストラベルに広げるための空間がなければ、各国語化の担当者は、あなたのウインドウの大きさか、ラベルやその他のコントロールの位置を調節しなければならないでしょう。

一般的に、英語で書かれたテキストラベルは、翻訳の過程で長さが40%まで広がることを想定すべきです。

nibtool を使用する

nib ファイルを手作業で翻訳することにはうんざりさせられることがありますが、あなたのプロジェクトの既に各国語化済みの nib ファイルに、それ以降の設計変更を反映させることはもっとうんざりさせられるでしょう。

幸い、nibtool コマンドラインユーティリティは、変更を他の nib ファイルに反映することを大幅に簡単にしてくれます。このツールはあなたの nib ファイル内のすべての文字列の辞書に作用します。これを用いて、あなたは nib ファイルから文字列を展開し、それを翻訳し、nib ファイルへと挿入することができます。

あるいは、もしあなたが有効な翻訳を既に手にしていたら、あなたは既訳の文字列を、最新の設計変更を含んでいるマスタ nib ファイルへと挿入して、各国語化された nib ファイルを更新することもできます。

以下の例は、どのようにプロジェクトのメイン nib ファイルから、英語の文字列を新しい strings ファイルに展開するかを示しています。あなたは後で使用するために得られたファイルのコピーを記録するか、翻訳チームにそのファイルを渡すことができます。

nibtool -L en.lproj/MainMenu.nib > ./MainMenu.strings

以下の例では、もともとの英語ベースの nib ファイルを得てから、それに翻訳した文字列をマージ【融合】して、nib ファイルの各国語化バージョンを作成しています。

// 翻訳した文字列は、元のファイルと同じ名前【MainMenu.strings】で de.lproj ディレクトリに置かれています。
nibtool -d de.lproj/MainMenu.strings en.lproj/MainMenu.nib -W de.lproj/MainMenu.nib

もし、あなたが既に各国語化された nib ファイルを持っていて、それを段階的に更新したい場合には、nibtool はいくつかのオプションを提供します。既存の nib ファイルへ、新しい翻訳のセットを挿入するには、-I オプションを使用することができます。詳細は、nibtool man page を参照してください。

重要:あなたの nib ファイル内の文字列の翻訳は、各国語化の工程の一つの段階に過ぎないということを忘れないでください。各国語化の担当者は、文字列の長さの変化に合わせるために、ビューやコントロールのレイアウトを調節する必要があるかもしれません。また、nibtool は、フォーマッタオブジェクトに関連付けられた、日付と時刻の書式を自動的に更新しません。

各国語化された nib ファイルを生成する

Mac OS X 用アプリケーションの国際化は、部分的には、特定の言語や地域に向けて各国語化されたリソースを、バンドルの正しい位置に配置することを意味します。

いくつかの状況においては、Code Fragment Manager(CFM)形式のアプリケーションの場合のように、あなたはこの作業を手作業で行わなければならないかもしれません。

幸いにも、大抵の場合にはあなたを手助けしてくれるツールが存在します。

Xcode はあなたの国際化を補助するための、File Reference Inspector【ファイル参照インスペクタ?】を提供します。リソースファイルを国際化するには、以下の通りに行います…

  1. Xcode にリソースファイルを加えます。
    1. 「グループとファイル」ペインであなたのプロジェクトを広げます。
    2. Resources フォルダを選択します。
    3. 「プロジェクト」メニューから「プロジェクトに追加…」を選択します。
    4. ファイルブラウザを用いてリソースまで移動し、選択し、「開く」をクリックします。
    5. Xcode の表示するダイアログにおいて、「デスティネーショングループのフォルダに項目をコピーする」を選択し、「参照タイプ」【relative】の一つ(たとえば「プロジェクトを基準」)を選択し、希望する対象を選択し、「追加」をクリックします。
  2. リソースファイルを選択し、インスペクタウインドウを開きます【「ファイル」>「情報を見る」】。
  3. ファイルがまだ各国語化可能でなければ、インスペクタウインドウの【「一般」タブの】「ファイルをローカライズ可能にする」ボタンをクリックします。(注、あなたがこのボタンをクリックしたときに、現在の各国語化の変種を示すために表示が変化します。)
  4. 「言語環境を追加」ボタンをクリックします。現れたシートの中で、あなたが追加したいロケールを選択または入力します。Xcode はリソースを他の .lproj ディレクトリへコピーします。

もし、あなたのリソースファイルがプレーンテキストファイルであれば、各国語化されたコピーのそれぞれに対して、必ずファイルエンコーディングを設定すべきです。

あなたは、ファイルを各国語化可能にする【「ローカライズ可能にする」】前に、ファイルのデフォルトの各国語化を設定することができます。

あなたは、ファイルの異なる各国語化バージョンに対して異なるエンコーディングを使用することができます。

特定の各国語化に対してエンコーディングを設定するには、「グループとファイル」ペインで各国語化を選択し、インスペクタウインドウで設定を変更します。