web-dev-qa-db-ja.com

NSPhotoLibraryUsageDescriptionキー(ALAssets)をローカライズする方法

アプリケーションのinfo.plistファイル( ここを参照 )で定義されているNSPhotoLibraryUsageDescriptionキーをローカライズしようとしています。
このキーは、アプリが最初にカメラロールへのアクセスを要求するときにカスタムメッセージを提供するためのポイントを提供します。 ALAssetsLibraryを使用してアセットグループを列挙しています(これにより、アクセス要求メッセージがポップアップ表示されます)。

これまでのところ、私のグーグルは私がこれをどのように達成できるかについて答えていません。

Info.plistファイル全体には、ロケールに依存しないコンテンツが多く含まれているため、ローカライズは避けたいと思います。

誰かがすでにこれを解決したか、どのように進めるかについてのヒントがありますか?

23
kr45ko

InfoPlist.stringsと呼ばれる、作成できるファイル(プロジェクトの作成時に作成される可能性があります)があります。このファイルは、ファイルLocalizable.stringsと同じように使用およびローカライズされます。

その中には、次のようなエントリがあります。

NSPhotoLibraryUsageDescription = "Test of new Photos warnings";

キーの前後に引用符がないことに注意してください

キーがinfo.plistに含まれている限り、その言語で使用できる場合は、InfoPlist.stringの値を使用してローカライズされると思います。それ以外の場合は、info.plistで定義されているものを使用します。

47
Joe Licari

私はここに私のメモを持っています https://github.com/onmyway133/notes/issues/29 、またはあなたは得るでしょう

Info.plistキーがありません-このアプリは、使用法の説明なしでプライバシーに配慮したデータにアクセスしようとします。アプリのInfo.plistには、アプリがこのデータをどのように使用するかをユーザーに説明する文字列値を持つNSPhotoLibraryUsageDescriptionキーが含まれている必要があります。これらの問題が修正されたら、修正されたバイナリを再配信できます。

確認してください

  • Info.plistでキーを宣言します
  • InfoPlist.stringsでローカライズします
  • "NSPhotoLibraryUsageDescription" = "Test of new Photos warnings";のように二重引用符は必要ありません。NSPhotoLibraryUsageDescription = "Test of new Photos warnings";を使用できます。
2
onmyway133

私のためにこれを機能させる唯一の方法は、Xcodeで次のことを行うことでした。

1)Project target -> Info-> Localization-> Add localizationに移動します

そこに言語を追加しました。この操作により、<projectName>/<LanguageInitials>.lprojフォルダーが作成されました。

enter image description here

2)フォルダ<projectName>/<LanguageInitials>.lproj内にファイルInfoPlist.stringsを作成しました。

3)テキストを追加しました:

NSPhotoLibraryUsageDescription = "<Add your translated text here>";

そのInfoPlist.stringsファイル内。

4)次に、そのフォルダーをFile -> add new files to the projectを使用してプロジェクトに追加するか、ドラッグアンドドロップします。

注:これをテストするには、次のようにします。

キャッシュをクリーンアップし、シミュレーターの言語を新しい言語に設定し、スキーム内の言語をシミュレーターでの実行時に新しい言語に編集して、シミュレーターを再起動しました。

enter image description here

0
Florin Dobre