我正在尝试本地化应用程序的info.plist文件(reference here)中定义的 NSPhotoLibraryUsageDescription 键。
当应用程序首次要求访问您的相机胶卷时,此键可让您提供自定义消息。
我正在使用ALAssetsLibrary来枚举资产组(这会触发弹出的访问请求消息)。
到目前为止,我的谷歌搜索没有回答我是如何实现这一目标的。
我想避免本地化整个info.plist文件,因为它包含更多非依赖于区域设置的内容。
任何人已经解决了这个问题或提示如何继续?
答案 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键,其中包含一个字符串值,向用户解释应用程序如何使用此数据。 一旦纠正了这些问题,您就可以重新更新已更正的二进制文件。
确保
"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
文件夹。
2)我在文件夹<projectName>/<LanguageInitials>.lproj
内创建了InfoPlist.strings文件。
3)我添加了文本:
NSPhotoLibraryUsageDescription = "<Add your translated text here>";
在该InfoPlist.strings
文件中。
4)然后,我用File -> add new files to the project
或拖放将该文件夹添加到项目中。
注意:要对此进行测试:
清理缓存,在模拟器上将语言设置为新的语言,在方案上将其编辑为新语言,然后重新启动模拟器。