【Objective-C】iPhoneアプリの多言語化(ローカライズ)

日本語と英語を切り替えて表示するために言語ファイルを追加したときのメモ。

参考にしたのは下記サイト

まずは言語ファイル用のディレクトリ(フォルダ)を作る。

英語は「en.lproj」

サンプルを参考にするとrootディレクトリに作成してるみたいだけど、個人的に言語ファイルはまとめたかったので、「Languages」というディレクトリを作って、そこに入れた。

※追記
やっぱり他を見習ってrootディレクトリにen.lprojとja.lprojを作るようにした。

次はXcodeから

Resourcesを右クリック → 追加 → 新規ファイル → (Mac OS X) Resource → String File

でファイル名は「Localizable.strings」。保存場所はさっきの「en.lproj」を選択。

同じ要領で「InfoPlist.strings」も追加する。

  • Localizable.strings ・・・ プログラムで使う言語ファイル
  • InfoPlist.strings ・・・ アプリケーション名などを設定する言語ファイル

これで英語用の言語ファイルが準備できたので、en.lprojをディレクトリごとコピーして「ja.lproj」にして、Xcodeからは

Resourcesを右クリック → 追加 → 既存ファイル

でja.lprojのファイルを選択すれば完了。下のような感じになるはず。

image

赤いのは「情報を見る」から追加しようとして失敗したのが原因だと思う。

あとは言語ファイルを選択してキーと値を記述していく。

Localizable.stringsの場合は

“hoge” = “日本語テスト”

プログラムで利用する場合は

NSString* text = NSLocalizedString(@"hoge", @"");

第2引数はいらないらしい。

 

あと調べていて見つけたのが、

アプリを初めて申請するときに聞かれてくる「Primary Language」はEnglishにしないとめんどくさいことになりそう。

これからiPhoneアプリを作ろうと思っている人へのアドバイス