ブログトップ 記事一覧 ログイン 無料ブログ開設

Debian GNU/Linux 3.1 on PowerMac G4 このページをアンテナに追加 RSSフィード Twitter

2011-04-16 Xcode 4 で NSLocalizedString を使ってローカライズ

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

[][]右クリックでローカライズできない! 09:11 右クリックでローカライズできない!を含むブックマーク 右クリックでローカライズできない!のブックマークコメント

まずはいつも通りの手順。

最初に NSLocalizedString を使ってコードを書く。こんな感じ

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

次に genstrings コマンドを使ってローカライズに必用な文字列を抜き出す。

こんな感じにすると、フォルダ内の全ての *.m ファイルを調べてまとめてくれる。

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

で、同じフォルダ内にできあがった Localizable.strings ファイルをプロジェクトに加える。

(ドラッグ&ドロップで加えると盛大に文字化けするのだけど…どうしたら良いの???*1

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

f:id:paraches:20110416085803p:image


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

どうしたら良いの???

[][]Xcode 4 では Utilities の File Inspector 09:11 Xcode 4 では Utilities の File Inspectorを含むブックマーク Xcode 4 では Utilities の File Inspectorのブックマークコメント

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

f:id:paraches:20110416085149p:image


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

f:id:paraches:20110416085150p:image

f:id:paraches:20110416085151p:image


f:id:paraches:20110416085152p:image


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

こんな感じ。

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

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

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

yamayama 2011/04/16 20:35 右クリックでローカライズできない!の文字化けについて
genstringsがまだxcode4に対応していないのでしょうか、文字コードがUTF-16で生成してしまうようです。
xcode3時代は*.stringファイルはUTF-16でした。
xcode4からはUTF-8(たぶん変更出来ない)になりました。
私はテキストエディタで生成されたLocalizable.stringsを開いてエンコーディングをUTF-8に変更しました。
xcode4に対応したgenstringsがどこかにあるのかも知れませんが。

parachesparaches 2011/04/17 11:19 コメントありがとうございます。
テキストエディタでエンコーディングを変更するのが簡単そうですね。これからはその方法でやってみます。
私はプロジェクトに登録した Localizable.strings への Reference を削除。生成された Localizable.strings をダブルクリックして開くと文字化けせずに開けるので、それを「New File...」で自分で作った Localizable.strings にコピペしていました。
やっぱりテキストエディタの方が楽チンですね。