iOS(iPhone)アプリのローカライズ方法

はじめに

iOSアプリケーション(iPhone, iPad, iPod)の国際化には、Apple strings形式(拡張子は.string)のローカライゼーションファイルが必要です。このファイルには、キーと値のペアが含まれていて、最初のエントリ(キー)は検索用で、次のエントリ(値)はキーに関連づけられた値となっています。

例を見てみましょう。 英語ローカライゼーションのstringsファイル:

“Father” = “Dad”;
“Mother” = “Mom”;

日本語ローカライゼーションのstringsファイル:

“Father” = “お父さん”;
“Mother” = “お母さん”;

上の例では、”Father”キーは英語では”Dad”を返し、日本語では”お父さん”を返します。同じように、”Mother”キーは英語では”Mom”を返し、日本語では”お母さん”を返します。

このガイドでは、XcodeのStoryboardとユーザーが定義した文字列で、ローカライゼーションファイルを抽出、作成する方法をご案内します。

Storyboardのローカライズ

StoryboardはXcode 4.2で導入され、iOSアプリケーションのユーザーインターフェースを視覚的に編集することができます。それ以前のXcodeのInterface Builderでは、開発者は一度に一つのビューを編集することしかできませんでしたが、Storyboardでは、アプリケーションのビュー全体を編集することができるようになりました。

”Use Base internationalization”を選択(Xcode 4.5以上)

  1. 左側のプロジェクトナビゲーターでプロジェクトファイルを選択する。
  2. プロパティ画面で“Use Base internationalization”のチェックボックスを選択する。 Use Base Internationalization

言語の追加

  1. ‘+’ボタンをクリックし、言語を追加する。 Language drop down menu

プロジェクトのStoryboard(左側のプロジェクトナビゲーターの.storyboardファイル)は、ドロップダウンメニューで複数のStoryboardを切り替えられるようになります。

Localized storyboard

ローカライズ可能な文字列に変換

  1. 作成した新しい言語のStoryboardを選択します。
  2. ファイルインスペクタでLocalizationセクションを探します。
  3. ビュータイプを”Localizable Strings”にセットします。

Set to Localizable Strings to view the source

これで、Storyboardの.stringsファイルが抽出されました。

翻訳を追加

Conyacで.stringsファイルをアップロードすれば、選択した言語へ、早く、正確に翻訳を行うことができます。

ユーザー定義された文字列のローカライズ

アプリケーションに含まれる文字列は、Storyboard内だけでなく、ユーザー定義された文字列が存在します。ユーザー定義された文字列をローカライズするには、新しいstringsロケールファイルと、NSLocalizedStringヘルパーマクロが必要です。

ロケールファイルの作成

  1. メインメニューのFile -> New -> File… から新しいstringsロケールファイルを作成します。
  2. iOS -> Resource -> Strings FIleを選択します。
  3. ファイル名を標準のLocalizable.stringsから場合に応じて変更します。
  4. プロジェクトナビゲーターでLocalizable.stringsファイルを選択します。
  5. ファイルインスペクタで”Localize…”ボタンをクリックします。 Select 'Localize...'
  6. 標準ローカライズ言語を選択します。
  7. もう一度プロジェクトナビゲーターからLocalizable.stringsファイルを選択します。
  8. ファイルインスペクタのLocalizationセクションからアプリケーションでサポートする言語のチェックボックスを選択します。 Localized strings file

これで、Localizable.stringsファイルに複数の言語が含まれました。ロケールの項目を追加する前に、ローカライゼーションマクロについて知る必要がありますので、次に説明します。

NSLocalizeHelperマクロの使用

文字列は次のようにして作成されるのを思い出しましょう。

NSString *title = @"Harry Potter";
NSString *desc = [NSString stringWithFormat:@" uses magic"];

上記の文字列をローカライズできるようにするためには、NSLocalizedStringマクロが必要です。

NSString * title = [[NSString alloc] initWithFormat:NSLocalizedString(@"Harry Potter", nil)];
NSString * desc = [[NSString alloc] initWithFormat:NSLocalizedString(@"magic", nil)];

NSLocalizedString(@“Harry Potter”, nil)は、前節で作成したLocalizable.stringsファイルの”Harry Potter”キーを探して、対応した値を代入します。

たとえば、Localizable.stringsファイルが以下のようになっている場合:

Localizable.strings (English):

“Harry Potter” = “Harry Potter”;
“magic” = “ uses magic”;

Localizable.strings (Japanese):

“Harry Potter” = “ハリーポッター”;
“magic” = “は魔法使い”;

NSLocalizedString(@“Harry Potter”,nil)が使われたとき、iOSデバイスの言語設定によって、以下のように表示されます。

  • Englishに設定されているとき…”Harry Potter”
  • 日本語に設定されているとき…”ハリーポッター”

翻訳の追加

Conyacで.stringsファイルをアップロードすれば、選択した言語へ、早く、正確に翻訳を行うことができます。

まとめ

本ガイドでは、iOSアプリケーションにローカライゼーションを追加する方法を説明しました。あなたのアプリケーションのローカライズの手助けとなることを願います。もし、ご質問やご感想がありましたら、support@conyac.cc宛までよろしくお願いします。

ローカライズファイルを翻訳するのに経験豊富な翻訳者が必要ですか? Conyacは最適なソリューションです。
早く、低価格で頼れるサービスです。