Soh*_*eil 237 beta xcode plist ios
您可能知道iOS 8需要NSLocationWhenInUseUsageDescription键才能使用用户的位置.我已将此密钥和一些常规信息添加到我的信息plist中.
如何在plist文件中使用翻译字符串?
- 更新 -
我已经有了一个Localizable字符串.我只是想知道我可以在plist字符串中使用类似NSLocalizedString(MYSTRING,nil)的东西.我知道我可以创建多个info.plist文件进行本地化,但我想知道可能有一个更简单的方法.
Fah*_*mov 444
您应该使用InfoPlist.stringsfile来本地化值Info.plist.要执行此操作,请转到File->New->File,Strings File在Resource选项卡下选择iOS,命名InfoPlist并创建.打开并插入Info.plist要本地化的值,如:
NSLocationWhenInUseUsageDescription = "Description of this";
Run Code Online (Sandbox Code Playgroud)
现在您可以InfoPlist.strings使用翻译本地化文件.祝好运!
编辑:
选择本地化选项,或根据需要启用本地化,

你应该能够在左侧编辑器中看到该文件.

编辑:
这是Info.plist密钥本地化的官方文档.
Zvi*_*Zvi 31
以上所有内容对我来说都不起作用(XCode 7.3)所以我阅读了Apple如何做的参考,它比上面描述的要简单得多.根据Apple的说法:
本地化的值不存储在Info.plist文件本身中.而是将特定本地化的值存储在名为InfoPlist.strings的字符串文件中.将此文件放在与用于存储同一本地化的其他资源相同的特定于语言的项目目录中.
因此,我创建了一个名为InfoPlist.strings的字符串文件,并将其放在"xx"语言的xx.lproj文件夹中(并使用File-> Add Files to ...将其添加到项目中).而已.不需要键"Localized resources can mixed"= YES,并且不需要base.lproj或en.lproj中的InfoPlist.strings.
如果无法在特定于语言的文件中找到密钥,则应用程序将使用Info.plist键值作为默认值.因此,我将我的英文值放在Info.plist文件中,并将已翻译的文件放在特定于语言的文件中,进行测试,一切正常.
特别是,不需要本地化InfoPlist.strings(在base.lproj,en.lroj和xx.lproj中创建该文件的版本),在我的情况下,这样做不起作用.
Ale*_*age 31
InfoPlist.string文件。它会自动为您添加的新语言创建“InfoPlist.string”的副本。
Mat*_* S. 11
我强烈建议您阅读Apple的指南,并查看此处列出的WWDC资源: 国际化和本地化主题
要在项目中添加新语言时专门回答您的问题
,您有机会选择要包含的InfoPlist文件(如果您有多个目标,则您将拥有多个Info plist文件).获取以下屏幕所需要做的就是点击本地化下的+并选择一种新语言来添加支持.

一旦添加,它将在给定语言的相应lproj目录中创建必要的字符串文件.
- 编辑 -
为了清楚起见,iOS将使用plist条目的键作为本地化字符串文件中的键,根据用户当前选择的语言替换Plist文件的字符串.
提示
请记住,默认情况下,iOS Simulator利用您的系统语言。请同时在iOS模拟器设置中更改语言(和地区),以便测试翻译。
本地化字符串(请参阅此处的 Apple文档)应为
NSLocationWhenInUseUsageDescription = "Description of this";
Run Code Online (Sandbox Code Playgroud)
而不是(带有引号“ ...”)
"NSLocationWhenInUseUsageDescription" = "Description of this";
Run Code Online (Sandbox Code Playgroud)除了已接受的答案(该项目是在 Flutter 上但与原生基本相同):
我确实有文件夹Base.lproj,en.lproj等等。该文件具有如下行(键周围没有引号,末尾有分号):xx.kproj.InfoPlist.strings
NSLocationWhenInUseUsageDescription = "My explanation why I need this";
另外,检查project.pbxproj文件,它位于 XXX.xcodeproj/project.pbxproj 中:它应该在代码中包含您的所有语言(en、fr 等)
但即便如此,它也没有奏效。最后,我注意到了文件CFBundleLocalizations中的关键Info.plist。(在 XCode 中将其作为原始键值打开 - 在文件上单击鼠标右键Info.plist-> 打开为 -> 源代码)确保数组中的值是代码而不是完整的单词,例如而fr不是French等。
<key>CFBundleLocalizations</key>
<array>
<string>en</string>
<string>ru</string>
<string>lv</string>
</array>
Run Code Online (Sandbox Code Playgroud)
并仔细检查您的设备是否设置为您正在测试的语言。干杯
PS“开发语言”不会影响你的问题,不用费心去改变它。
逐步本地化Info.plist:
“ NSLocationAlwaysAndWhenInInUseUsageDescription” =“ blabla”;
“ NSLocationAlwaysUsageDescription” =“ blabla2”;
就是所有的工作,您已经本地化了info.plist文件!
对于在尝试添加本地化时遇到未包含 info.plist 问题的任何人,例如在 Xcode 9 中。
您需要通过进入并单击文件检查器中的本地化按钮来使 info.plist 本地化,如下所示。
当您添加新的本地化时,info.plist 将包含在文件资源中。
| 归档时间: |
|
| 查看次数: |
117995 次 |
| 最近记录: |