2014-02-12 45 views
9

我需要本地化info.plist的两个密钥:NSLocationUsageDescriptionNSCameraUsageDescription。所以我尝试创建一个名为InfoPlist.strings的新文件,然后对其进行本地化,但app总是显示存储在info.plist文件中的字符串。怎么了?无法本地化info.plist字符串

Information Property List Key Reference

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

我InfoPlist.strings文件:

NSCameraUsageDescription = "hello"; 
NSLocationUsageDescription = "hello hello"; 
+0

您是否更改iPhone模拟器的语言?从设置应用程序中更改,而不是来自方案。 – scottphc

+0

使用InfoPlist.strings http://stackoverflow.com/questions/25736700/how-to-localise-a-string-inside-the-ios-info-plist-file – onmyway133

回答

5

请生成的应用程序包检查,文件是否真的保存在那里,它被放置到正确的位置。通常这是缺失的一步。

刚进入项目设置,打开“构建阶段”,看看是否 的文件可以在“复制包资源”中找到

+0

好点!对我来说InfoPlist.string被忽略,直到我手动将它添加到复制包资源 – cyanide

0

该文件需要是一个目录的指示语言内部,例如en.lproj

0

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

0

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

Sometimes you have to make a Clean first

3

你的plist文件可以有多个版本的应用程序支持的每种语言。 在工具\文件检查器(右侧)点击“本地化”:

enter image description here

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

enter image description here

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

+0

ok,我有一个名为“someinfo.plist”的文件,它的作用是“info.plist”,但需要在项目设置中指定(“包装”部分) 。如何在本地化时指定路径? –

+1

它是自动的。对于每种语言你的应用程序将使用相关的plist。如果没有(当前语言没有plist文件) - 你的应用程序将使用基本的。 – yonivav

0

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

<key>NSPhotoLibraryUsageDescription</key> 
<string>Please allow access to the photo library.</string> 

当然,你仍然需要这些密钥进行本地化(你不能本地化应用程序的Info.plist)。因此,您还需要将这些隐私密钥添加到InfoPlist.strings中,这些密钥又是本地化的。

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