Xcode 4 で NSLocalizedString を使ってローカライズ

iPhone アプリのローカライズは多くの人が NSLocalizedString を使って行っていると思う。自分もそうなんだけど、今回 Xcode 4 でローカライズしようと思ってちょこっとだけハマったのでメモ。


[Update:2012/09/30]
Xcode 4.5(もっと前からかも…)からはローカライズする言語を増やす手順がちょっと変わりました。

右クリックでローカライズできない!

まずはいつも通りの手順。
最初に NSLocalizedString を使ってコードを書く。こんな感じ

NSString *titleString = NSLocalizedString(@"SettingTabItemTitle", @"Title of Setting Tab Item");

次に genstrings コマンドを使ってローカライズ必用な文字列を抜き出す。
こんな感じにすると、フォルダ内の全ての *.m ファイルを調べてまとめてくれる。

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

で、同じフォルダ内にできあがった Localizable.strings ファイルをプロジェクトに加える。
(ドラッグ&ドロップで加えると盛大に文字化けするのだけど…どうしたら良いの???*1

Xcode 4 では Supporting Files グループが良いかな。


Xcode 3.2.6 だと、この Supporting Files グループに加えた Localizable.strings フォルダを右クリック->「情報を見る」して、表示された「情報」ウィンドウの「一般」タブで「ファイルをローカライズ可能にする」ボタンをクリックすると各国のローカライズ用のファイルが作れていたのだけど、Xcode 4 では「情報を見る」メニューが右クリックで出てこない…。(もちろん command+I しても駄目! Instruments が起動しちゃう。このショートカット、いつも間違えちゃって本当に困る。)
どうしたら良いの???

*1:コメント欄で教えていただきました。
Localizable.string が UTF-16 で、Xcode 4 が UTF-8 で読み込んでいるのが原因だそうです。
一旦テキストエディタで読み込んで、UTF-8 を指定して保存すれば文字化けしなくなります。

Xcode 4 では Utilities の File Inspector

というわけで、Xcode 4 では Utilities エリア?の File Inspector に Localization がある。


ここで「+」をクリックして出てくるメニューから「Japanese」を選択すれば、さっきドラッグ&ドロップした Localizable.strings が English と Japanese に分かれる。



これで後は各国語の Localizable.strings ファイルを編集すれば OK。
こんな感じ。

/* Title of Setting Tab Item */
"SettingTabItemTitle" = "設定";

これでローカライズは OK!