如何本地化NSPhotoLibraryUsageDescription键(ALAssets)

时间:2013-04-08 14:18:32

标签: iphone xcode ios6 alassetslibrary

我正在尝试本地化应用程序的info.plist文件(reference here)中定义的 NSPhotoLibraryUsageDescription 键。
当应用程序首次要求访问您的相机胶卷时,此键可让您提供自定义消息。 我正在使用ALAssetsLibrary来枚举资产组(这会触发弹出的访问请求消息)。

到目前为止,我的谷歌搜索没有回答我是如何实现这一目标的。

我想避免本地化整个info.plist文件,因为它包含更多非依赖于区域设置的内容。

任何人已经解决了这个问题或提示如何继续?

3 个答案:

答案 0 :(得分:45)

您可以创建一个名为InfoPlist.strings的文件(可以在创建项目时为您创建)。此文件的使用和本地化与文件Localizable.strings非常相似。

在其中您将拥有并输入类似的内容:

NSPhotoLibraryUsageDescription = "Test of new Photos warnings";

请注意,密钥周围没有引号

我认为只要密钥包含在info.plist中,如果该语言可用,它就会使用InfoPlist.string中的值进行本地化。否则它将使用info.plist中定义的任何内容。

答案 1 :(得分:2)

我在这里注明https://github.com/onmyway133/notes/issues/290,否则你会得到

  

缺少Info.plist密钥 - 此应用程序尝试在没有使用说明的情况下访问隐私敏感数据。该应用程序的Info.plist必须包含一个NSPhotoLibraryUsageDescription键,其中包含一个字符串值,向用户解释应用程序如何使用此数据。   一旦纠正了这些问题,您就可以重新更新已更正的二进制文件。

确保

  • 您在Info.plist
  • 中声明了密钥
  • 您在InfoPlist.strings
  • 中对其进行了本地化
  • 您不需要双引号,例如"NSPhotoLibraryUsageDescription" = "Test of new Photos warnings";,您只需使用NSPhotoLibraryUsageDescription = "Test of new Photos warnings";

答案 2 :(得分:0)

对我来说唯一可行的方法是在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