プロジェクトの「ローカライゼーションネイティブ開発リージョン」が英語に設定されているため、ベースファイルには英語の単語が含まれているはずです。
更新-私の質問を明確にするために:
これが正しく得られるかどうかは完全には分かりませんが、TTBOMKの質問に回答してみます。
コードでNSLocalizedString(key, comment)
を使用しているとします。最初の引数が実際には翻訳された(または翻訳される)文字列そのものではなく、文字列のキーであることがはっきりとわかります。したがって、「コードを書く」とき、実際には基本言語やその他の言語で文字列を書くことはありません。コードに文字列のプレースホルダーを追加しているように考える必要があります。
後で、サポートする言語ごとに_Localizable.strings
_の形式で_key = value;
_ファイルを作成する必要があります。 UIを少なくとも1つの人間が読める言語で表示するには、少なくとも1つの_Localizable.strings
_ファイルに、各プレースホルダーキーに適切な文字列値を設定する必要があります。
例:コードにNSLocalizedString(@“ConfirmationButtonTitle", @“Yada yada”)
が含まれている場合、_Localizable.strings
_要素を含む_”GreenButtonTitle” = “Tap here to confirm”;
_ファイルがあることは完全に理にかなっています。 _Localizable.strings
_ファイルを作成しない場合、または_Localizable.strings
_ファイルにGreenButtonTitle
キーが含まれていない場合、ボタンのタイトルはConfirmationButtonTitle
に戻ります。プレースホルダーキー。
そうは言っても、ほとんどの人はさまざまな理由でキーを文字列値とまったく同じように命名することを好みます。これは間違いなく便利で、非常に一般的な方法ですが、人々の心に葛藤を引き起こす可能性があります。
したがって、代わりにNSLocalizedString(@“Tap here to confirm", @“Yada yada”)
のような以前のNSLocalizedString
の例を作成する場合、デフォルト/ベースの_Localizable.strings
_ファイルには、おそらく_“Tap here to confirm” = “Tap here to confirm”;
_のような要素が含まれます。
ここで何が起こるかというと、自分で繰り返しているのではなく、ベース言語の文字列値とまったく同じようにキーに名前を付けているということです。
[〜#〜]編集[〜#〜]
常にベース言語のコンセプトがありましたが、私が理解しているように、Xcode 5はこれをさらに強調しています。それは良いことです。基本言語が英語の場合、英語用の_Localizable.strings
_ファイルを用意する必要はありません。
エンドユーザーがどの言語を見るかという質問に対処するだけでなく、AppStoreに何が表示されるかも検討する必要があります。私の現在の経験では、英語版のBaseを使用すると、アプリの説明でサポートされている言語のリストに英語が表示されません(Appleは、基本ローカライズの言語を知っています))。
私はこの問題に自分で会いました-ベース(英語)、ドイツ語、ロシア語
ターゲット設定は以下を参照します:
Localization native development region = en
しかし、Appstoreでは次の形式で表示されます。
Languages: German, Russian
英語への言及なし
ベースローカライゼーションを英語に複製することを検討します(ユーザーがスクリーンショットからアプリを英語で機能することを確認しているので、優先度は高くありません)。
編集: iOS8では動作が異なるようです-アプリケーション設定(Settings.bundle)は、「優先言語順序」に一致する翻訳がある場合、ベース翻訳を無視するようです。
つまり、アプリはローカライズされています:ベース、ドイツ語、ロシア語。 iPhoneは英語を使用するように構成されており、優先言語の順序は英語、ドイツ語、ロシア語です。
アプリケーション設定が付属しています...ドイツ語!
もう一度:これは設定のみに適用されますアプリケーション自体には適用されません!
documentation (Creating Strings Files for User-Facing Text in Your Code)に従って、あなたはすべきではありませんベースのローカリゼーションにLocalizable.strings
を追加します。開発言語が英語の場合でも、別のフォルダーを作成し、英語用にLocalizable.strings
を作成します。追加する言語ごとに他の言語を作成します。