Info.plistの2つのキーNSLocationUsageDescription
とNSCameraUsageDescription
をローカライズする必要があります。そこで、InfoPlist.stringsという名前の新しいファイルを作成してローカライズしようとしましたが、アプリには常にinfo.plistファイルに保存されている文字列が表示されます。どうしましたか?
情報プロパティリストキーリファレンス からの公式ドキュメント
ローカライズされた値は、Info.plistファイル自体には保存されません。代わりに、特定のローカリゼーションの値をInfoPlist.stringsという名前の文字列ファイルに保存します。このファイルは、同じローカリゼーションの他のリソースを格納するために使用するのと同じ言語固有のプロジェクトディレクトリに配置します。 InfoPlist.stringsファイルの内容は、ローカライズする個々のキーと適切に変換された値です。 Info.plistファイルでキー値を検索するルーチンは、ユーザーの言語設定を考慮に入れ、キーのローカライズされたバージョン(適切なInfoPlist.stringsファイルから)が存在する場合はそれを返します。キーのローカライズされたバージョンが存在しない場合、ルーチンはInfo.plistファイルに格納されている値を返します。
私のInfoPlist.stringsファイル:
NSCameraUsageDescription = "hello";
NSLocationUsageDescription = "hello hello";
生成されたアプリケーションパッケージをチェックインして、ファイルが実際にそこに保存され、正しい場所に配置されているかどうかを確認してください。通常、これは欠落しているステップです。
プロジェクト設定に移動し、「ビルドフェーズ」を開いて、ファイルが「バンドルリソースのコピー」にあるかどうかを確認します。
InfoPlist.strings
はスキームのアプリケーションリージョンを考慮しませんが、デバイスに設定されたリージョンを考慮します!デバイスの場合:Settings
->General
->Language & Region
、iPhone言語が好きかどうかを確認します。
最初にクリーンを作成する必要がある場合があります。[メニュー]-> [製品]-> [クリーン]をクリックします。
実際のところ、私の問題は、NSLocationWhenInUseUsageDescription定数のスペルを間違えたため、もちろん考慮されなかったことです。
IOS 10以降、Info.plistにプライバシーキーを追加する必要があります。
<key>NSPhotoLibraryUsageDescription</key>
<string>Please allow access to the photo library.</string>
もちろん、これらのキーをローカライズする必要があります(そして、アプリケーションのInfo.plistをローカライズすることはできません)。したがって、これらのプライバシーキーもInfoPlist.stringsに追加し、InfoPlist.stringsはローカライズされます。
"NSPhotoLibraryUsageDescription" = "Please allow access to the photo library.";