[XCODE] iPhoneアプリを国際化対応する
今日は、iPhoneアプリを国際化対応(ローカライズ)する方法を記載したいと思います。
YoheiM.NETでもいくつかのアプリをリリースしていますが、国際化対応しているアプリだと、 日本でのダウンロード数より海外のダウンロード数の方がかなり多いです。
アプリをリリースするなら国際化対応もするとダウンロード数も増えるかもしれません☆
Xibファイルのローカライズも可能ですが、レイアウトを各国毎に定義するのは、個人的には嫌なので、 画面のラベル名のローカライズもLocalizable.stringファイルで行っています。
以下がサンプルコードです。
NSLocalizedStringは、第1引数に文字を取得する為のKeyを、第2引数にコメントを記載します。
コメントは適切に記載する事で、後で作るLocalizable.stringsファイル内でのコメントが読みやすくなります。
上記例では、ローカライズしたいラベルのテキストを、NSLocalizedString関数で取得する事で、 デバイスの言語設定に合わせた文字を出力出来るようにしています。
作り方は簡単です。
ターミナルを開き、プロジェクトのソースコードが格納されているディレクトリ(Classesディレクトリ)に移動して、 以下のコマンドを実行します。
そーすると、genstringsを実行したカレントディレクトリに、Localizable.stringsファイルが作成されるので、 それをXCODEプロジェクトに読み込みます。
なお、ソースファイルを複数の階層に分けて保存している場合には、 以下のようにして、複数ディレクトリ分を纏めて作ることも可能です。
まずは、プロジェクトに読み込んだLocalizable.stringsファイルを選択します。 そーすると右側に以下のような画面が表示されるはずです。
ここで、Localizationの下にある「+」ボタンを押します。
そーするとまずは、自動的にEnglishが追加されます。
続いてもう一度「+」ボタンを押すと、次は、追加したい言語を選んで、追加することが出来るようになります。
ここでは、日本語に対応するためには、Japanezeを選びます。
これで、XCODEプロジェクトでの、対応する言語指定は完了です。
以下のような画面となっているはず。
それぞれの言語で、表示したい文言を指定します。
例えば、日本語の上記でNSLocalizedStringを指定した箇所を以下のように記載します。
iPhoneの言語設定は、設定アプリから指定出来ます。
複数言語を使う場合には、レイアウトが崩れる場合もあるので、確認は重要です(*´∇`*)
実際に行うと、日本以外にも、アメリカ、ヨーロッパ各国、インド、中国、韓国、中東などたくさんの国からダウンロードされて ビックリしました。
気分的には、「世界に向けたアプリを作る → 日本語対応をする」というように、アプリを日本語にローカライズする感覚でした。
今後もアプリを制作していきますので、また良いと思った情報があったらブログに発信します。
最後までお読み頂きましてありがとうございました(`・ω・´)
YoheiM.NETでもいくつかのアプリをリリースしていますが、国際化対応しているアプリだと、 日本でのダウンロード数より海外のダウンロード数の方がかなり多いです。
アプリをリリースするなら国際化対応もするとダウンロード数も増えるかもしれません☆
国際化対応(ローカライズ)の方法
iPhoneアプリのローカライズの方法は、いくつか用意されていますが、 ここでは、Localizable.stringsファイルを用いたローカライズの方法を記載します。Xibファイルのローカライズも可能ですが、レイアウトを各国毎に定義するのは、個人的には嫌なので、 画面のラベル名のローカライズもLocalizable.stringファイルで行っています。
STEP1:ローカライズする文字をNSLocalizedString関数で取得する
最初のステップとしては、ローカライズしたい文字を@"Somthing"といったNSStringで生成するのではなく、 NSLocalizedString関数を用いて取得するようにします。ローカライズが必要な箇所は全部やります。以下がサンプルコードです。
// Localize. // XXTitleLabelは、UILabelクラスのインスタンスで、 // 画面に表示するラベルと関連づけ(IBOutlet)されている。 DateTitleLabel.text = NSLocalizedString(@"Date", @"Summary Date"); AmountTitleLabel.text = NSLocalizedString(@"Total", @"Summary Total"); ContentTitleLabel.text = NSLocalizedString(@"Item", @"Item Item"); AmountPerContentTitleLabel.text = NSLocalizedString(@"Total", @"Summary Total");
NSLocalizedStringは、第1引数に文字を取得する為のKeyを、第2引数にコメントを記載します。
コメントは適切に記載する事で、後で作るLocalizable.stringsファイル内でのコメントが読みやすくなります。
上記例では、ローカライズしたいラベルのテキストを、NSLocalizedString関数で取得する事で、 デバイスの言語設定に合わせた文字を出力出来るようにしています。
STEP2:Localizable.stringsファイルを作成する
必要な箇所にNSLocalizedString対応を行ったら、次はその関数で文字を読み出す為の、読み出しもとファイルを作成します。作り方は簡単です。
ターミナルを開き、プロジェクトのソースコードが格納されているディレクトリ(Classesディレクトリ)に移動して、 以下のコマンドを実行します。
genstrings *.m
そーすると、genstringsを実行したカレントディレクトリに、Localizable.stringsファイルが作成されるので、 それをXCODEプロジェクトに読み込みます。
なお、ソースファイルを複数の階層に分けて保存している場合には、 以下のようにして、複数ディレクトリ分を纏めて作ることも可能です。
genstrings -a $(find . -name "*.m")
STEP3:Localizable.stringsファイルで対応したい言語を設定する
続いて、Localizable.stringsファイルで対応したい言語を設定します。まずは、プロジェクトに読み込んだLocalizable.stringsファイルを選択します。 そーすると右側に以下のような画面が表示されるはずです。
ここで、Localizationの下にある「+」ボタンを押します。
そーするとまずは、自動的にEnglishが追加されます。
続いてもう一度「+」ボタンを押すと、次は、追加したい言語を選んで、追加することが出来るようになります。
ここでは、日本語に対応するためには、Japanezeを選びます。
これで、XCODEプロジェクトでの、対応する言語指定は完了です。
以下のような画面となっているはず。
STEP4:Localizable.stringsファイルを編集する
上記の手順を踏むと、以下のようにLocalizable.stringsファイルを言語数だけ作成されます。それぞれの言語で、表示したい文言を指定します。
例えば、日本語の上記でNSLocalizedStringを指定した箇所を以下のように記載します。
/* Item Total */ "Item" = "項目"; /* Summary Term */ "Term" = "集計期間"; /* Summary Total */ "Total" = "総額";
STEP5:アプリを起動してみて、国際化対応の結果を試してみる
最後に起動して、ちゃんとローカライズ出来ているかを試します。iPhoneの言語設定は、設定アプリから指定出来ます。
複数言語を使う場合には、レイアウトが崩れる場合もあるので、確認は重要です(*´∇`*)
最後に
iPhoneアプリ開発やるなら、やっぱり全世界に向けて発信したい☆ 最初からそーいう思いだったので、このローカライズは私にとって、重要な作業でした。実際に行うと、日本以外にも、アメリカ、ヨーロッパ各国、インド、中国、韓国、中東などたくさんの国からダウンロードされて ビックリしました。
気分的には、「世界に向けたアプリを作る → 日本語対応をする」というように、アプリを日本語にローカライズする感覚でした。
今後もアプリを制作していきますので、また良いと思った情報があったらブログに発信します。
最後までお読み頂きましてありがとうございました(`・ω・´)