39
34

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

iOS / OS Xのインターナショナライズとローカリゼーション

Last updated at Posted at 2015-09-06

はじめに

iOS / OS Xアプリケーション開発において、適切にインターナショナライズ(i18n)されたアプリケーションのローカライズ(l10n)を支援するツールがいくつか存在する。Appleが提供しているツールには、genstringsibtoolAppleGlotがある。(サードバーティ製も存在するがここでは割愛。)

genstrings

  • ソースコード(.c、または.m)から翻訳が必要な文字列を抽出し、.stringsファイルに出力する。

  • NSLocalizedString("key", comment)、またはCFCopyLocalizedString("key", comment)から適切な文字テーブルエントリを生成し、Localizable.stringsに出力する。

  • 出力ファイル名やバンドル変更する場合、NSLocalizedStringFromTable()CFCopyLocalizedStringFromTable()NSLocalizedStringFromTableInBundle()NSLocalizedStringWithDefaultValue()を利用する。

  • マクロなどで隠されたNSLocalizedString()は文字テーブルエントリの対象に含まれない。

  • 以下の例では、拡張子が.mのファイルから翻訳が必要な文字列を抽出し、en.lprojLocalizable.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リファレンスは以下の通りです。

39
34
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
39
34

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?