ページ

2009年3月26日木曜日

ローカライズ(その9)

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

今回マージ作業をやってみて、実際の運用では気を付ける点がいくつかあることがわかった。

(1) 前回ローカライズした時点のNibファイルをすべて取っておく
 
 ibtool によるマージは旧バージョンと新バージョンの Nibの差分情報を使う。この為、前回ローカライズを行った時全言語の Nibファイルを取っておく必要がある。これを忘れるとマージができない。

(2) 英語Nibファイルに追加された文字列を用意する

 英語Nibファイルに変更を入れた後、翻訳用に文字列(例:MainMenu.strings)を生成する。この中で追加があったものだけを抽出してから翻訳を行う。前回の検証ではこの差分抽出は手作業で行った。



ibtool のマージ(--localize-incrementalオプション)のルールは ADCのドキュメントに書かれている。これに目を通しておくと引数で渡すファイルの役割がよく理解できる。
Interface Builder User Guide > Localization
Performing Incremental Localization Updates

ルールは次の通り(英文内のFrenchは「日本語」と置きえた)。

1. 新英語NIBファイルをコピーして新日本語NIBファイルとする。

2. 新英語NIBファイルと、旧英語NIBファイルを比較する。

 a) 新旧変更が無いものについては、旧日本語の文字列を、新NIBファイルへ適用する。

 b) もし新英語NIBファイルに存在して、旧英語NIBファイルに存在しない場合は、何もしない。
  (つまり、1.でコピーした時の英語の文字列が新日本語NIBに残る)

 c) もし旧英語NIBファイルに存在して、新英語NIBファイルに存在しない場合は、何もしない。
  (項目が削除された場合に起こる。この項目は新NIBには含まれないので問題ない)

3. 日本語文字列(*.strings)を新日本語NIBファイルへ適用する。
 (ここで 2-b) の新規文字列を置換する)



図で書くとこんな感じ。












多少は手間がかかるが(特に追加文字列の抽出)、今後の運用・保守のメドが立ったのでこの方法を使っていくことにしよう。


- - - -
引越やら何やらで作業進まず。
3月中リリースはちょっと無理かもしれない。
(プログラムはほぼ出来ているのだが翻訳やホームページ作成が間に合わない。。)