NSLocalizedStringでiphoneアプリ多言語対応 Xcode4

Screen shot 2011-09-12 at 6.31.01 PM

NSLocalizedStringで多言語対応

日本語版のiPadアプリが完成したので、AppleStoreに登録しようとしたところ、Primary Languageで止まった。
Primary Language、つまり「主要な言語」を選択してください、ってことなんだけど、
登録進めようとしたところ、「Primary Languageは1度決めたら2度変更できませんよ」って警告がでた。
日本語選択したら、そのアカウントではずっと日本語ですよ。ってことみたい。
いや・・。それは困る。
一応、調べてみたら本当にそういうことみたい。

前置き長くなったけど、iPhoneアプリの多言語対応化について調べたのでメモ。
多言語対応のためのNSLocalizedStringってのが最初から入っているので、そんなに大変ではないです。
ちなみにXcodeのVersionは4.0.2です。

NSLocalizedStringの使い方

とっても簡単。特にライブラリをインポートしたりは必要ありません。
ちなみに引数はNSLocalizedString(@”{キー}”, “{コメント}”)。

self.title = @"タイトル";
self.title = NSLocalizedString(@"Title", "Title for this application");

genstringsコマンドを使って言語化ファイル生成

次にTerminalを起動して以下のコマンドを叩きます。

$ cd {あなたのアプリのパス}
$ genstrings -a $(find . -name “*.m”)

すると、Localizable.stringsというファイルが生成されると思います。

Xcode設定

生成されたLocalizable.stringsファイルをXcode内のSupporting Filesフォルダにドロップ&ドラックします。

そうしたら、Supporting Filesフォルダ内のLocalizable.stringsをクリックして、
ユーティリティのFile Inspectorを表示します。

すると、画面右側に下記のようなフォームが表示されると思います。
変更箇所は2カ所のみで。
▼Localization内の+ボタンを押して言語を追加。(私の場合EnglishとJapanese)
▼Text SettingsのText EncodingをUTF-16に変更する。(UTF-8のままだとエラーが起きるみたい)

こんな感じでLocalizable.stringsの下に言語ファイルが生成されればOK。
あとは各言語ファイルを直接翻訳かけていけばOKです。

/* Title for this application */
“Title” = “タイトル”;

言語の切り替えはシミュレーターを起動して設定から

一応、言語の切り替えは成功。

ただ、言語切り替えた後、一度シミュレータを再起動しないとアプリ起動時に落ちるの。これは仕様だろうか・・。