无法本地化info.plist字符串

我需要本地化info.plist的两个键: NSLocationUsageDescriptionNSCameraUsageDescription 。 所以我尝试创建一个名为InfoPlist.strings的新文件,然后我将其本地化,但应用程序始终显示存储在info.plist文件中的字符串。 怎么了?

信息财产清单重点参考的官方文件

本地化值不存储在Info.plist文件本身中。 而是将特定本地化的值存储在名为InfoPlist.strings的字符串文件中。 将此文件放在与用于存储同一本地化的其他资源相同的特定于语言的项目目录中。 InfoPlist.strings文件的内容是您想要本地化的各个键以及适当翻译的值。 查找Info.plist文件中的键值的例程会考虑用户的语言首选项,并在存在时返回键的本地化版本(来自相应的InfoPlist.strings文件)。 如果不存在密钥的本地化版本,则例程将返回存储在Info.plist文件中的值。

我的InfoPlist.strings文件:

 NSCameraUsageDescription = "hello"; NSLocationUsageDescription = "hello hello"; 

请检查生成的应用程序包,文件是否确实存储在那里,并将其放在正确的位置。 通常这是缺少的一步。

只需进入项目设置,打开“Build Phases”并查看该文件是否可以在“Copy Bundle Resources”中找到

您的plist文件可以为您的应用程序支持的每种语言提供多个版本。 在Utilities \ File Inspector(右侧)中单击“Localize”:

在此处输入图像描述

然后选择您想拥有自己版本的语言:

在此处输入图像描述

之后,您将能够输入每个plist文件并根据需要进行编辑。

有时您必须首先进行清洁,单击菜单 – >产品 – >清洁。

有时你必须先做一个清洁

该文件需要位于指示语言的目录内,例如en.lproj

事实上,我的问题是我拼错了NSLocationWhenInUseUsageDescription常量,所以当然没有考虑到它。

从iOS 10开始,您需要将隐私密钥添加到Info.plist中。

 NSPhotoLibraryUsageDescription Please allow access to the photo library. 

当然,您仍然需要将这些键本地化(并且您无法本地化应用程序的Info.plist)。 因此,您还要将这些隐私密钥添加到InfoPlist.strings中,而InfoPlist.strings又是本地化的。

 "NSPhotoLibraryUsageDescription" = "Please allow access to the photo library.";