web-dev-qa-db-ja.com

英語以外の言語を開発言語およびベースローカリゼーションとして設定する方法

IOSアプリのXcodeプロジェクトが新しく作成されると、プロジェクト(ターゲットではない)設定で、デフォルトでUse Base internationalizationが有効になっており、Development Languageにローカライズされた2つのファイルがデフォルトでEnglishになっています(Main.storyboardに1つと1つLaunchScreen.storyboardの場合、どちらもBase.lprojディレクトリにあります)。スクリーンショットの下をご覧ください:

Xcode default project localization setting

(簡単にするため、ここではMain.storyboardについてのみ言及します。)

また、Main.storyboardの右側のパネルのローカリゼーションセクションで、Baseローカリゼーションがデフォルトでオンになっていることと、デフォルトでオフになっているEnglishローカリゼーションがあることを確認できます。スクリーンショットの下をご覧ください:

storyboard default localization setting

また、ターゲットのInfo.plistには、Localization native development regionという名前のキー(つまり、CFBundleDevelopmentRegion)があり、そのデフォルト値はenです。以下のスクリーンショットを参照してください。

Localization native development region

私がそれを正しく理解している場合、これらのデフォルト設定を使用すると、開発者はMain.storyboardBaseローカリゼーションに英語を記述し、Englishローカリゼーションを未チェックのままにすることができます。アプリが他の言語に適応する必要がある場合、開発者はプロジェクトのローカリゼーション設定でローカリゼーションを追加し、ポップアップダイアログでMain.storyboardを選択できます。スクリーンショットの下をご覧ください:

add localization

Chinese (Simplified)を例にとると、新しく作成されたディレクトリzh-Hans.lprojMain.stringsファイルが含まれます。 (簡単にするために、私はChinese (Simplified)ではなくChineseと呼びます。)開発者はこのファイル内の英語の文字列を中国語に翻訳する必要があります(デフォルトでMain.stringsディレクトリに新しく作成されたzh-Hans.lprojはデフォルトですべての英語ですMain.storyboardBase.lprojから複製されたテキスト)。これらの設定を使用すると、AppStoreでのこのアプリの説明のLanguageフィールドに英語(Baseローカライゼーション、英語はdevelopment languageであるため)と中国語(Chineseローカライゼーション)が表示されます。エンドユーザーのデバイスで、システム言語が英語/中国語(または英語/中国語が優先言語の1つ)の場合、アプリは対応する言語リソースを使用します(英語の場合はBaseローカリゼーションを使用します。中国語の場合はChineseローカリゼーションを使用します)。他のすべての言語設定では、CFBundleDevelopmentRegionenであるため、英語が代替言語として機能し、Baseローカリゼーションが使用されます。

だから私の最初の質問は、上記の理解は正しいですか?要約すると、development languageは英語なので、ストーリーボードファイルのEnglishローカリゼーションを有効にする必要はありません。 Baseローカリゼーションを使用して、ストーリーボードファイルに直接英語を記述します。英語以外の言語のローカリゼーションを追加するだけです。 (実際には、Englishローカリゼーションを有効にすると問題が発生します。Englishローカリゼーションを有効にすると、Base.lproj/Main.storyboarden.lproj/Main.stringsの両方のテキストを維持する必要があります。)

上記の理解が正しい場合、私の2番目の質問は、逆の方法で国際化を達成する方法ですか?つまり、Chinesedevelopment languageとして使用し、Baseローカリゼーションに中国語を記述し、Chinese以外の言語のローカリゼーションのみを追加する場合、それは可能であり、Xcodeでそれを行う方法はありますか?プロジェクトのBaseローカリゼーションがChineseではなくEnglishであると主張するために、プロジェクト設定でdevelopment languageを変更する方法が見つかりません。

15
goodbyeera

あなたの理解はほとんど正しいです。小さな説明が1つあります。ユーザーがロシア語などの第3言語で実行している場合、アプリが英語で実行されるとは限りません。代わりに、アプリはユーザーが好む最初の言語で実行されます。 iOS 8以降では、ユーザーは「ロシア語、フランス語、中国語、英語」などの優先言語のリストを持つことができます。この架空のユーザーの場合、アプリは英語よりもリストの前にあるため、実際には中国語で実行されます。

開発言語の変更に関する質問に答えるには、これは簡単なことではありませんが、実行することができます。具体的には:

  1. 最初にベース言語にしたい言語を追加します。 Xcodeがローカライズするために提供するすべてのファイルのチェックを外します
  2. (観察したように)Info.plistで、開発地域を、ベース言語にしたい言語に変更します。プロパティは少し間違った名前になっていることに注意してください。その値は、地域または国コードではなく、言語コード(オプションの国コード付き)でなければならないためです。
  3. Xcodeでプロジェクトを閉じます。別のコードエディターでprojectname.xcodeproj/project.pbxprojを開き、developmentRegionを検索します。 developmentRegion = English;のような行が表示されます。これを変更して、Info.plistファイルに入力したのと同じ言語を参照します。
  4. Xcodeでプロジェクトを再度開きます。ローカライズ可能なすべてのファイルを確認し、英語の横にあるチェックボックスをオンにして、ローカライズ可能なリソースを生成します。ストーリーボードとxibsの場合、Xcodeは文字列ファイルの代わりにストーリーボードを作成する場合があることに注意してください。その場合は、ファイルタイプを文字列ファイルに変更してください。

ベース言語としてfrを使用した結果の例を次に示します。

Project info

File info

18
lensovet