IOSアプリのXcodeプロジェクトが新しく作成されると、プロジェクト(ターゲットではない)設定で、デフォルトでUse Base internationalization
が有効になっており、Development Language
にローカライズされた2つのファイルがデフォルトでEnglish
になっています(Main.storyboard
に1つと1つLaunchScreen.storyboard
の場合、どちらもBase.lproj
ディレクトリにあります)。スクリーンショットの下をご覧ください:
(簡単にするため、ここではMain.storyboard
についてのみ言及します。)
また、Main.storyboard
の右側のパネルのローカリゼーションセクションで、Base
ローカリゼーションがデフォルトでオンになっていることと、デフォルトでオフになっているEnglish
ローカリゼーションがあることを確認できます。スクリーンショットの下をご覧ください:
また、ターゲットのInfo.plist
には、Localization native development region
という名前のキー(つまり、CFBundleDevelopmentRegion
)があり、そのデフォルト値はen
です。以下のスクリーンショットを参照してください。
私がそれを正しく理解している場合、これらのデフォルト設定を使用すると、開発者はMain.storyboard
のBase
ローカリゼーションに英語を記述し、English
ローカリゼーションを未チェックのままにすることができます。アプリが他の言語に適応する必要がある場合、開発者はプロジェクトのローカリゼーション設定でローカリゼーションを追加し、ポップアップダイアログでMain.storyboard
を選択できます。スクリーンショットの下をご覧ください:
Chinese (Simplified)
を例にとると、新しく作成されたディレクトリzh-Hans.lproj
にMain.strings
ファイルが含まれます。 (簡単にするために、私はChinese (Simplified)
ではなくChinese
と呼びます。)開発者はこのファイル内の英語の文字列を中国語に翻訳する必要があります(デフォルトでMain.strings
ディレクトリに新しく作成されたzh-Hans.lproj
はデフォルトですべての英語ですMain.storyboard
のBase.lproj
から複製されたテキスト)。これらの設定を使用すると、AppStoreでのこのアプリの説明のLanguage
フィールドに英語(Base
ローカライゼーション、英語はdevelopment language
であるため)と中国語(Chinese
ローカライゼーション)が表示されます。エンドユーザーのデバイスで、システム言語が英語/中国語(または英語/中国語が優先言語の1つ)の場合、アプリは対応する言語リソースを使用します(英語の場合はBase
ローカリゼーションを使用します。中国語の場合はChinese
ローカリゼーションを使用します)。他のすべての言語設定では、CFBundleDevelopmentRegion
がen
であるため、英語が代替言語として機能し、Base
ローカリゼーションが使用されます。
だから私の最初の質問は、上記の理解は正しいですか?要約すると、development language
は英語なので、ストーリーボードファイルのEnglish
ローカリゼーションを有効にする必要はありません。 Base
ローカリゼーションを使用して、ストーリーボードファイルに直接英語を記述します。英語以外の言語のローカリゼーションを追加するだけです。 (実際には、English
ローカリゼーションを有効にすると問題が発生します。English
ローカリゼーションを有効にすると、Base.lproj/Main.storyboard
とen.lproj/Main.strings
の両方のテキストを維持する必要があります。)
上記の理解が正しい場合、私の2番目の質問は、逆の方法で国際化を達成する方法ですか?つまり、Chinese
をdevelopment language
として使用し、Base
ローカリゼーションに中国語を記述し、Chinese
以外の言語のローカリゼーションのみを追加する場合、それは可能であり、Xcodeでそれを行う方法はありますか?プロジェクトのBase
ローカリゼーションがChinese
ではなくEnglish
であると主張するために、プロジェクト設定でdevelopment language
を変更する方法が見つかりません。
あなたの理解はほとんど正しいです。小さな説明が1つあります。ユーザーがロシア語などの第3言語で実行している場合、アプリが英語で実行されるとは限りません。代わりに、アプリはユーザーが好む最初の言語で実行されます。 iOS 8以降では、ユーザーは「ロシア語、フランス語、中国語、英語」などの優先言語のリストを持つことができます。この架空のユーザーの場合、アプリは英語よりもリストの前にあるため、実際には中国語で実行されます。
開発言語の変更に関する質問に答えるには、これは簡単なことではありませんが、実行することができます。具体的には:
Info.plist
で、開発地域を、ベース言語にしたい言語に変更します。プロパティは少し間違った名前になっていることに注意してください。その値は、地域または国コードではなく、言語コード(オプションの国コード付き)でなければならないためです。projectname.xcodeproj/project.pbxproj
を開き、developmentRegion
を検索します。 developmentRegion = English;
のような行が表示されます。これを変更して、Info.plist
ファイルに入力したのと同じ言語を参照します。ベース言語としてfr
を使用した結果の例を次に示します。