您可能已经知道,iOS 8需要使用NSLocationWhenInUseUsageDescription密钥才能使用用户位置。我已将此密钥和一些通用信息添加到我的info plist中。
如何在plist文件中使用翻译字符串?
--更新--
我已经有了本地化字符串,我想知道是否可以在plist字符串中使用NSLocalizedString(MYSTRING,nil)之类的东西。我知道我可以为本地化创建多个info.plist文件,但我想知道是否有更简单的方法。
您可能已经知道,iOS 8需要使用NSLocationWhenInUseUsageDescription密钥才能使用用户位置。我已将此密钥和一些通用信息添加到我的info plist中。
如何在plist文件中使用翻译字符串?
--更新--
我已经有了本地化字符串,我想知道是否可以在plist字符串中使用NSLocalizedString(MYSTRING,nil)之类的东西。我知道我可以为本地化创建多个info.plist文件,但我想知道是否有更简单的方法。
InfoPlist.strings
文件(保持I
和P
大写)来本地化Info.plist
的值。要做到这一点,进入文件->新建->文件
,在iOS
的资源
选项卡下选择Strings File
,命名为InfoPlist
,然后创建。打开并插入你想要本地化的Info.plist
的值,例如:"NSLocationWhenInUseUsageDescription" = "Description of this";
InfoPlist.strings
文件。Info.plist
键本地化的官方文档。因此,我创建了一个名为InfoPlist.strings的字符串文件,并将其放置在“xx”语言的xx.lproj文件夹中(并使用 文件->添加文件到... 将其添加到项目中)。就是这样。不需要键"Localized resources can be mixed" = YES,也不需要在 base.lproj 或 en.lproj 中使用 InfoPlist.strings。本地化值不存储在 Info.plist 文件中。 相反,您将特定本地化的值存储在名为 InfoPlist.strings 的字符串文件中。 您将此文件放置在与用于存储同一本地化的其他资源的语言专用项目目录中。
逐步本地化 Info.plist:
"NSLocationAlwaysAndWhenInUseUsageDescription"="blabla";
"NSLocationAlwaysUsageDescription"="blabla2";
这就完成了所有工作,你已经本地化了你的 info.plist 文件!
小贴士
请记住,iOS模拟器默认使用您的系统语言。请在iOS模拟器设置中更改语言(和地区),以便测试您的翻译。
本地化字符串(请参阅苹果文档此处)应该为
NSLocationWhenInUseUsageDescription = "Description of this";
而不是(用引号“…”)
"NSLocationWhenInUseUsageDescription" = "Description of this";
"NSLocationWhenInUseUsageDescription"="description"
是有效的),都没有关系。它可以有也可以没有。 - mluisbrown如果某些功能无法正常工作,请确保您已添加:
"Localized resources can be mixed" = YES
到info.plist中。在我的情况下,InfoPlist.strings文件被忽略了。
我强烈建议阅读苹果公司的指南,并查看此处列出的WWDC资源:国际化和本地化主题
具体来说,当您将新语言添加到项目中时,您有机会选择包括哪些InfoPlist文件(如果您有多个目标,则会有多个Info plist文件)。要获得以下屏幕,您只需在本地化下方点击+号,并选择新语言以支持添加。
一旦添加完成,它将为给定语言创建必要的字符串文件,并放置在适当的lproj目录中。
--编辑--
请注意,iOS将根据用户当前选择的语言使用plist条目的键作为本地化字符串文件中的键,以交换Plist文件的字符串。
Base.lproj
, en.lproj
, xx.kproj.
等,并且在每个文件夹中都有InfoPlist.strings
文件。这个文件包含如下行(键周围没有引号,并以分号结尾):
NSLocationWhenInUseUsageDescription = "我需要这个的解释";
project.pbxproj
文件,它位于XXX.xcodeproj/project.pbxproj中:
它应该具有代码(en、fr等)表示的所有语言
但即使如此也不起作用。最后,我注意到Info.plist
文件中的CFBundleLocalizations
键。(要将其作为原始键值以XCode方式打开,在Info.plist
文件上单击鼠标右键-> 打开方式-> 源代码)
确保数组中的值是代码而不是完整单词,例如fr
而不是法语
等。<key>CFBundleLocalizations</key>
<array>
<string>en</string>
<string>ru</string>
<string>lv</string>
</array>
请确保您的设备语言设置正确,以便进行测试。祝好!
另外,“开发语言”不会影响您的问题,请勿更改。