ご存知かもしれませんがiOS 8ではユーザーの位置情報を使用するためにNSLocationWhenInUseUsageDescriptionキーが必要です。このキーといくつかの一般的な情報を私のinfo plistに追加しました。
Plistファイル内で翻訳文字列をどのように使用できますか?
- アップデート -
私はすでにローカライズ可能な文字列を持っています。 plist文字列の中にNSLocalizedString(MYSTRING、nil)のようなものを使用できるのではないかと思います。ローカライズのためにinfo.plistのファイルを複数作成できることは知っていますが、もっと簡単な方法があるのではないかと思いました。
InfoPlist.strings
の値をローカライズするには、Info.plist
ファイルを使用する必要があります。これを行うには、File->New->File
に移動し、Resource
のiOS
タブでStrings File
を選択し、InfoPlist
と名前を付けて作成します。ローカライズしたいInfo.plist
値を開いて挿入します。
NSLocationWhenInUseUsageDescription = "Description of this";
今、あなたは翻訳でInfoPlist.strings
ファイルをローカライズすることができます。がんばろう!
編集:
地域対応オプションを選択するか、必要に応じて地域対応を有効にします。
左側のエディタでもファイルを見ることができるはずです。
編集:
ここで はInfo.plist
キーローカライゼーションの公式ドキュメントです。
上記のすべてが私にはうまくいきませんでした(XCode 7.3)ので、私はやり方についてのAppleの参考文献を読みました、そしてそれは上記よりはるかに簡単です。アップルによると:
ローカライズされた値はInfo.plistファイル自体には保存されません。代わりに、InfoPlist.stringsという名前の文字列ファイルに特定のローカライゼーションの値を格納します。このファイルは、同じローカライズ用の他のリソースを格納するために使用するのと同じ言語固有のプロジェクトディレクトリに配置します。
したがって、私はInfoPlist.stringsという名前の文字列ファイルを作成し、それを "xx"言語のxx.lprojフォルダに配置しました。 File-> Add Files to ...を使用してプロジェクトを作成します。それでおしまい。キー "ローカライズされたリソースを混在させることができます" = YES、およびbase.lprojまたはen.lprojのInfoPlist.stringsは不要です。
言語固有のファイルでキーが見つからない場合、アプリケーションはInfo.plist Key-Valueをデフォルト値として使用します。したがって、私は自分の英語の値をInfo.plistファイルに入れ、翻訳された値を言語固有のファイルに入れて、テストしてすべてうまくいきました。
特に、InfoPlist.strings(base.lproj、en.lroj、およびxx.lprojにファイルのバージョンを作成します)をローカライズする必要はありません。そのようにしてもうまくいきませんでした。
うまく動かない場合は、追加したことを確認してください。
"ローカライズされたリソースは混在させることができます" = YES
info.plistに入ります。私の場合、InfoPlist.stringsファイルは単に無視されました。
私はアップルのガイドを読み、ここにリストされているWWDCリソースを見ることを強くお勧めします: 国際化とローカライゼーションのトピック
プロジェクトに新しい言語を追加するときに、あなたの質問に具体的に答えるためにどのInfoPlistファイルを含めるかを選択する機会があります(複数のターゲットがある場合は、複数のInfo plistファイルがあります)。次の画面を表示するために必要なことは、[ローカライズ]の下の[+]を押して、サポートを追加するための新しい言語を選択することです。
追加すると、指定した言語の適切なlprojディレクトリに必要な文字列ファイルが作成されます。
- 編集 -
明確に言うと、iOSはplistエントリのキーをローカライズされたstringsファイルのキーとして使用して、ユーザーの現在選択されている言語に基づいてPlistファイルのストリングを交換します。
ヒント
IOSシミュレータはデフォルトでシステム言語を利用することを忘れないでください。あなたの翻訳をテストするためにもiOSシミュレータ設定で言語(そして地域)を変更してください。
ローカライゼーション文字列(ここのAppleドキュメント を参照 )は、
NSLocationWhenInUseUsageDescription = "Description of this";
ではない(引用符 "..."付き)
"NSLocationWhenInUseUsageDescription" = "Description of this";
RGMLが言うように、InfoPlist.stringsを作成し、それをローカライズしてから、キーと次のような値を追加することができます。
指定した言語のinfo.plistにキーが追加されます。
ステップバイステップのInfo.plistのローカライズ:
"NSLocationAlwaysAndWhenInUseUsageDescription" = "blabla";
"NSLocationAlwaysUsageDescription" = "blabla2";
これですべての作業が完了し、info.plistファイルをローカライズしました。
私の場合、すべてが正しく設定されていましたが、それでもInfoPlist.stringsファイルが見つかりませんでした。
本当にうまくいった唯一のことは、InfoPlist.stringsファイルを削除して再びプロジェクトに追加することでした。
私の場合、ローカライゼーションは名前の ' - '記号のせいでうまくいきませんでした。例: "aero-Info.plist"とローカライズされたファイル: "aero-InfoPlist.strings"と "aeroInfoPlist.strings"は機能しませんでした。