web-dev-qa-db-ja.com

info.plist文字列をローカライズできません

Info.plistの2つのキーNSLocationUsageDescriptionNSCameraUsageDescriptionをローカライズする必要があります。そこで、InfoPlist.stringsという名前の新しいファイルを作成してローカライズしようとしましたが、アプリには常にinfo.plistファイルに保存されている文字列が表示されます。どうしましたか?

情報プロパティリストキーリファレンス からの公式ドキュメント

ローカライズされた値は、Info.plistファイル自体には保存されません。代わりに、特定のローカリゼーションの値をInfoPlist.stringsという名前の文字列ファイルに保存します。このファイルは、同じローカリゼーションの他のリソースを格納するために使用するのと同じ言語固有のプロジェクトディレクトリに配置します。 InfoPlist.stringsファイルの内容は、ローカライズする個々のキーと適切に変換された値です。 Info.plistファイルでキー値を検索するルーチンは、ユーザーの言語設定を考慮に入れ、キーのローカライズされたバージョン(適切なInfoPlist.stringsファイルから)が存在する場合はそれを返します。キーのローカライズされたバージョンが存在しない場合、ルーチンはInfo.plistファイルに格納されている値を返します。

私のInfoPlist.stringsファイル:

NSCameraUsageDescription = "hello";
NSLocationUsageDescription = "hello hello";
13
DrKey

生成されたアプリケーションパッケージをチェックインして、ファイルが実際にそこに保存され、正しい場所に配置されているかどうかを確認してください。通常、これは欠落しているステップです。

プロジェクト設定に移動し、「ビルドフェーズ」を開いて、ファイルが「バンドルリソースのコピー」にあるかどうかを確認します。

8
Stefan Eilers

Plistファイルには、アプリケーションがサポートする言語ごとに複数のバージョンを含めることができます。ユーティリティ\ファイルインスペクタ(右側)で、[ローカライズ]をクリックします。

enter image description here

次に、独自のバージョンを作成する言語を選択します。

enter image description here

その後、各plistファイルを入力し、必要に応じて編集できるようになります。

4
yonivav

InfoPlist.stringsはスキームのアプリケーションリージョンを考慮しませんが、デバイスに設定されたリージョンを考慮します!デバイスの場合:Settings->General->Language & Region、iPhone言語が好きかどうかを確認します。

2
Laura Corssac

最初にクリーンを作成する必要がある場合があります。[メニュー]-> [製品]-> [クリーン]をクリックします。

Sometimes you have to make a Clean first

1
rockXrock

実際のところ、私の問題は、NSLocationWhenInUseUsageDescription定数のスペルを間違えたため、もちろん考慮されなかったことです。

0
Sebastien

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.";
0
Cezar Signori