如您所知,iOS 8需要NSLocationWhenInUseUsageDescription键才能使用用户的位置。我已将此密钥和一些常规信息添加到我的信息列表中。
如何在plist文件中使用翻译字符串?
-更新-
我已经有一个可本地化的字符串。我只是想知道我可以在plist字符串中使用类似NSLocalizedString(MYSTRING,nil)之类的东西。我知道我可以创建多个info.plist文件进行本地化,但是我想知道是否会有更简单的方法。
如您所知,iOS 8需要NSLocationWhenInUseUsageDescription键才能使用用户的位置。我已将此密钥和一些常规信息添加到我的信息列表中。
如何在plist文件中使用翻译字符串?
-更新-
我已经有一个可本地化的字符串。我只是想知道我可以在plist字符串中使用类似NSLocalizedString(MYSTRING,nil)之类的东西。我知道我可以创建多个info.plist文件进行本地化,但是我想知道是否会有更简单的方法。
Answers:
您应该使用InfoPlist.strings
file本地化的值Info.plist
。为此,请转到File->New->File
,Strings File
在的Resource
标签下选择iOS
,为其命名InfoPlist
并创建。打开并插入Info.plist
要本地化的值,例如:
NSLocationWhenInUseUsageDescription = "Description of this";
现在,您可以InfoPlist.strings
使用翻译本地化文件。祝好运!
编辑:
选择本地化选项,或根据需要启用本地化,
您应该也可以在左侧编辑器中看到该文件。
编辑:
这是Info.plist
密钥本地化的官方文档。
积分到马可,感谢包括在这个答案的图片!
以上所有内容都不适合我(XCode 7.3),因此我阅读了有关如何使用Apple的参考,并且比上面描述的要简单得多。根据苹果的说法:
本地化的值不存储在Info.plist文件本身中。而是将特定本地化的值存储在名称为InfoPlist.strings的字符串文件中。您将此文件放在用于存储其他资源以进行相同本地化的相同语言特定项目目录中。
因此,我创建了一个名为InfoPlist.strings的字符串文件,并将其放置在“ xx”语言的xx.lproj文件夹中(并使用File-> Add Files to ...将其添加到项目中)。而已。不需要键“可以混合本地化的资源” = YES,也不需要base.lproj或en.lproj中的InfoPlist.strings。
如果该应用程序在特定于语言的文件中找不到键,则使用Info.plist键值作为默认值。因此,我将我的英语值放在Info.plist文件中,并将翻译后的值放在语言特定的文件中,经过测试,一切正常。
特别是,不需要本地化InfoPlist.strings(它会在base.lproj,en.lroj和xx.lproj中创建文件的版本),在我的情况下,这种方式不起作用。
提示
请记住,默认情况下,iOS Simulator利用您的系统语言。请同时在iOS模拟器设置中更改语言(和地区),以测试您的翻译。
本地化字符串(请参阅此处的 Apple文档)应为
NSLocationWhenInUseUsageDescription = "Description of this";
而不是(带有引号“ ...”)
"NSLocationWhenInUseUsageDescription" = "Description of this";
"NSLocationWhenInUseUsageDescription"="description"
有效)。可以有或没有。
我强烈建议阅读Apple指南,并查看此处列出的WWDC资源: 国际化和本地化主题
为了专门回答您的问题,当您在项目中添加新语言时,您就有机会选择要包含的InfoPlist文件(如果您有多个目标,则将有多个Info plist文件)。要获得以下屏幕,所有您需要做的就是点击Localizations(本地化)下的+,然后选择一种新的语言来添加对它的支持。
添加后,它将在给定语言的相应lproj目录中创建必要的字符串文件。
- 编辑 -
请注意,iOS会根据用户当前选择的语言,使用plist条目的键作为本地化字符串文件中的键,将Plist文件的字符串换出。
逐步本地化Info.plist:
Save As
字段中仅写入InfoPlist(“ I”大写和“ P”大写)“ NSLocationAlwaysAndWhenInInUseUsageDescription” =“ blabla”;
“ NSLocationAlwaysUsageDescription” =“ blabla2”;
就是所有的工作,您已经本地化了info.plist文件!
对于尝试添加本地化(例如在Xcode 9中)遇到info.plist问题的人。
您需要使info.plist可本地化,方法是进入文件并单击文件检查器中的localize按钮,如下所示。
然后,当您要添加新的本地化时,info.plist将包含在文件资源中。
在我的情况下,本地化不起作用的原因是名称中的“-”符号。示例:“ aero-Info.plist”和本地化文件:“ aero-InfoPlist.strings”和“ aeroInfoPlist.strings”无效。