iPhone アプリのローカライズ方法です。

下記サイトが大変詳しく参考になりました。
A-Liaison BLOG: iPhoneアプリをローカライズ(国際化対応)してみた

文字列出力部分にNSLocalizedString() を利用する

NSString* string = @"hoge";

としている部分を

NSString* string = NSLocalizedString(@"hoge", @"comment");

のようにする。
@”hoge” の部分は出力したい文字列で、@”comment” の部分は後で使うローカライズするファイルにコメントとして入ります。nil でもいいのですが、コメントを入れておいた方が後で翻訳する時に便利です。

Localizable.string ファイルを生成する

翻訳ファイル(Localizable.string) を作るのは手動でも出来ますが、漏れがあったり面倒なのでコマンドで自動生成するのが便利です。

genstrings *.m

実行するとカレントディレクトリにある全ての拡張子が .m ファイルのソースから NSLocalizedString() 関数を使用している部分を拾ってきて、Localizable.strings ファイルを作成してくれます。

先に紹介したリンク元で書かれていた Tips で、以下のコマンドでプロジェクト内の全てのソースをまとめて Localizable.string ファイルにしてくれます。これすごく便利!

genstrings -a $(find . -name "*.m")

Xcode に Localizable.string ファイルを取り込む

Xcode にドラッグ&ドロップして追加します。グループは Resource にでも入れておけばよいかと思います。Xcode に取り込んだ後、ローカライズの設定が必要です。Localizable.string ファイルを右クリックして「情報を見る」を選択します。表示されウィンドウの「一般タブ」の左下にある「ファイルをローカライズ可能にする」をクリックします。再度 Localizable.string の情報を見るを選択すると左下に「ローカリゼーションを追加」というボタンをあるのでクリックして追加したい言語を選択します。選択できるのは English, Japanese, French, German です。それ以外は手動で追加する必要があるようです。
e38394e382afe38381e383a3-1

翻訳する

Xcode から Localizable.string の下に出来ている言語ファイルを選択して翻訳したい言語ファイルを開いて編集していきます。このときに、NSLocalizedString() でコメントを入れておくと

/* comment */
"hoge" = "hoge";

のようにコメントが入り、どこで使用しているかなどが分かりやすくなります。

翻訳は

/* comment */
"hoge" = "ホゲ";

のように右側を翻訳していきます。

注意事項

Localizable.string ファイルは UTF-16 で保存しなければいけません。iPhone シュミレータではローカライズされているのに、実機でローカライズされていないときはだいたい文字コードの問題が多いです。

関連する投稿