はじめに
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リファレンスは以下の通りです。