はじめに
iOS / OS Xアプリケーション開発において、適切にインターナショナライズ(i18n)されたアプリケーションのローカライズ(l10n)を支援するツールがいくつか存在する。Appleが提供しているツールには、genstrings、ibtool、AppleGlotがある。(サードバーティ製も存在するがここでは割愛。)
genstrings
-
ソースコード(.c、または.m)から翻訳が必要な文字列を抽出し、
.stringsファイルに出力する。 -
NSLocalizedString("key", comment)、またはCFCopyLocalizedString("key", comment)から適切な文字テーブルエントリを生成し、Localizable.stringsに出力する。 -
出力ファイル名やバンドル変更する場合、
NSLocalizedStringFromTable()、CFCopyLocalizedStringFromTable()、NSLocalizedStringFromTableInBundle()、NSLocalizedStringWithDefaultValue()を利用する。 -
マクロなどで隠された
NSLocalizedString()は文字テーブルエントリの対象に含まれない。 -
以下の例では、拡張子が
.mのファイルから翻訳が必要な文字列を抽出し、en.lprojにLocalizable.stringsという名前で保存する。$ genstrings -o en.lproj *.m -
多くのオプションがあり、かなり便利に使える。詳細は
man genstringsを参照のこと。
ibtool
-
genstringsコマンドとは異なり、Interface Builderにより作成されたNIB / XIB / Storyboardファイルが対象となる。 -
ibtool自体は.stringsファイルを出力するためだけのコマンドではない。(コンパイルから検証まで行う。) -
IBはローカライズ時に自動的に翻訳ファイル(
.strings)を作成するが、その後でUIを変更した場合に翻訳ファイルを自動的に更新しない。このため、以下のコマンドで文字テーブルエントリファイルを作成し、FileMerge.appなどを使ってマージを行う。(慣れると簡単。)$ ibtool --generate-strings-file path/to/Main.strings Main.storyboard
AppleGlot
- iOS / OS Xアプリケーション開発者向けのApple純正のローカリゼーションツール。
- ローカリゼーション用語集で、一般的な文字列の翻訳を行うことができる。
- 差分開発にも対応(リリースごとの差分のみを翻訳すればよい)。
-
appleglotコマンドによる操作も可能。 - AppleGlot およびローカリゼーション用語集よりダウンロードできる。
- AppleGlotの詳細については、AppleGlot DMGファイルの『Apple Glot 4 User's Guide 』を参照のこと。
追記
mono0926様より、Xcode 6からXLIFFによる国際化フローがサポートされているとのご指摘がありました。
Appleリファレンスは以下の通りです。