
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” = “タイトル”;
言語の切り替えはシミュレーターを起動して設定から
一応、言語の切り替えは成功。
ただ、言語切り替えた後、一度シミュレータを再起動しないとアプリ起動時に落ちるの。これは仕様だろうか・・。