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

まずはいつも通りの手順。
最初に 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 が起動しちゃう。このショートカット、いつも間違えちゃって本当に困る。)
どうしたら良いの???
■[xcode][ローカライズ]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!
*1:コメント欄で教えていただきました。
Localizable.string が UTF-16 で、Xcode 4 が UTF-8 で読み込んでいるのが原因だそうです。
一旦テキストエディタで読み込んで、UTF-8 を指定して保存すれば文字化けしなくなります。







genstringsがまだxcode4に対応していないのでしょうか、文字コードがUTF-16で生成してしまうようです。
xcode3時代は*.stringファイルはUTF-16でした。
xcode4からはUTF-8(たぶん変更出来ない)になりました。
私はテキストエディタで生成されたLocalizable.stringsを開いてエンコーディングをUTF-8に変更しました。
xcode4に対応したgenstringsがどこかにあるのかも知れませんが。
テキストエディタでエンコーディングを変更するのが簡単そうですね。これからはその方法でやってみます。
私はプロジェクトに登録した Localizable.strings への Reference を削除。生成された Localizable.strings をダブルクリックして開くと文字化けせずに開けるので、それを「New File...」で自分で作った Localizable.strings にコピペしていました。
やっぱりテキストエディタの方が楽チンですね。