如何本地化iOS info.plist文件中的string?

正如你可能知道iOS 8需要NSLocationWhenInUseUsageDescription键来使用用户的位置。 我已经将这个密钥和一些一般信息添加到我的信息plist中。 在这里输入图像说明

如何在plist文件中使用翻译string?

– 更新 –

我已经有一个Localizablestring。 我只是想知道,我可以在pliststring中使用类似NSLocalizedString(MYSTRING,nil)的东西。 我知道我可以创build多个文件的info.plist本地化,但我想知道可能有一个更简单的方法。

    您应该使用InfoPlist.strings文件来本地化Info.plist值。 要做到这一点,转到File->New->File ,selectiOS Resource选项卡下的Strings File ,将其命名为InfoPlist ,然后创build。 打开并插入您想要本地化的Info.plist值,如:

     "NSLocationWhenInUseUsageDescription" = "Description of this"; 

    现在您可以将InfoPlist.strings文件与翻译本地化。 祝你好运!

    编辑:

    select本地化选项,或者根据需要启用本地化,

    右侧编辑器

    你也应该可以在左边的编辑器上看到这个文件。

    左侧编辑

    编辑:

    这里是Info.plist密钥本地化的官方文档。

    以上所有内容对我来说都不起作用(XCode 7.3),所以我阅读了苹果的参考资料,比上面描述的要简单得多。 据苹果介绍:

    本地化的值不存储在Info.plist文件本身中。 而是将特定本地化的值存储在名为InfoPlist.strings的string文件中。 您将此文件放置在您用于存储其他资源以用于相同的本地化相同的语言特定的项目目录。

    因此,我创build了一个名为InfoPlist.strings的string文件,并将其放置在“xx”语言的xx.lproj文件夹中(并使用File-> Add Files to …将其添加到项目中)。 而已。 不需要键入“本地化资源可以混合”= YES,并且不需要base.lproj或en.lproj中的InfoPlist.strings。

    如果在特定于语言的文件中找不到键,应用程序将使用Info.plist键值作为默认值。 因此,我把我的英文值放在Info.plist文件中,翻译后的文件放在语言特定的文件中,经过testing,一切正常。

    特别是,不需要本地化InfoPlist.strings(它在base.lproj,en.lroj和xx.lproj中创build文件的一个版本),在我的情况下这样做是行不通的。

    如果有什么不工作,请确保你添加了:

    “本地化资源可以混合”=是

    进入info.plist。 在我的情况下,InfoPlist.strings文件被忽略。

    我强烈推荐阅读苹果指南,并查看WWDC资源: 国际化和本地化主题

    要专门回答你的问题,当你添加一个新的语言到你的项目 在这里输入图像说明 ,您将有机会select要包含哪些InfoPlist文件(如果您有多个目标,则会有多个Info plist文件)。 您只需点击本地化版本下的+,select一种新的语言来添加支持即可。 在这里输入图像说明

    一旦添加完成,它将在给定语言的相应lproj目录中创build必要的string文件。

    – 编辑 –

    只是要清楚,iOS会根据用户当前select的语言,使用plist条目的键作为本地化string文件中的键,来replacePlist文件的string。

    正如RGML所说,你可以创build一个InfoPlist.strings,进行本地化,然后添加你的密钥和值如下:“NSLocationWhenInUseUsageDescription”=“帮助find我!”;

    它会将指定语言的关键字添加到您的info.plist中。

    对于任何遇到的问题,info.plist不包括在试图添加本地化,​​就像在Xcode 9。

    您需要进入info.plist进行定位,并点击文件检查器中的localizebutton,如下所示。

    当您去添加新的本地化时,info.plist将被包含在文件资源中。

    在这里输入图像说明

    在我的情况下,一切都设置正确,但仍然没有findInfoPlist.strings文件。

    唯一真正起作用的是删除InfoPlist.strings文件并将其添加到项目中。