XCode4 での多言語対応

基本、Englisth で開発を進めてきたという前提で..

多言語化への準備

開発する際、多言語化に対応したい文字列(NSString) は基本的にすべて以下の様に 記載する。

NSString *string = NSLocalizedString(@"stringA", @"commentA")

この関数は多言語化した際に、言語ファイルから stringA をキーとして多言語対象となるStringを返す。 最初の NSString が多言語化時の キー となり、2番目の NSString は多言語ファイルを作成するときに自動で付加されるコメントとなる。

なお、定義が無い場合はキーとなった stringA が帰るだけなので、心配はいらない。 つまり、 後述の言語ファイルが未定義の場合、 string = @”stringA” となる。

言語定義ファイルの生成

ひととおり、開発が進み、そろそろ言語ファイルを作成したくなったら、コマンドラインにて以下の操作を行う。

$ cd プロジェクトのライブラリがあるフォルダ
$ genstrings *.m

このコマンドで、すべての *.m フィアルに対して NSLocalizedString を検索し、以下の様な言語ファイル Localizable.strings を1つ生成してくれます。

/* commentA */
"stringA" = "stringA"

なお、このファイルは UTF-16 である必要があります。

言語定義ファイルのライブラリへの取り込みと言語指定

作成したファイルをXCode のプロジェクトへドラッグアンドドロップして、取り込みましょう。(Resourceフォルダ配下あたりが良いかな)

その後、XCode内でLocalizable.stringsファイルを選択し、右ペインのFile Inspectorを開きます。

_images/showFileInspector.png

File Inspector で Localization メニューがあるので、+ボタンを押して追加したい言語を選択することで、対応言語を指定できます。

_images/choiceLocalization.png

なお、言語指定後の各ファイルの配置フォルダは以下の様に変化します。

  • 英語の Localizable.strings は en.lproj フォルダ配下へ移動される
  • 日本語の Localizable.strings は jp.lproj フォルダ配下へ移動される

それぞれ UTF-16 になっているかどうかもチェックしておきましょう。

Localizable.strings ファイルの更新について

生成した言語ファイルはテキストエディタやXCodeで編集可能ですが、genstrings コマンドで再生成もできます。 ただしこの際、既存のファイルは上書きされてしまうので、要注意。 なお、言語ごとに実行したい場合は以下の様 -o フォルダ名 にすることで、言語のフォルダ別にLocalizable.stringsを生成できます。

genstrings -o en.lproj *.m

参考: 多言語化の手順メモ(XCode4向け)

XCode4 のビルド中間ファイル置き場

XCode4 からは ~/Library/Developer/Xcode/DerivedData/アプリ名-ハッシュ/Build にビルドファイルが配置されるようになりました。 言語ファイルをいじったりして、おかしくなって、にっちもさっちもいかなくなった場合は、

cd ~/Library/Developer/Xcode/DerivedData/アプリ名-ハッシュ/Build
rm -rf *

をやってみるのも手です。