首页 文章

如何本地化iOS info.plist文件中的字符串?

提问于
浏览
211

您可能知道 iOS 8 需要 NSLocationWhenInUseUsageDescription 键来使用用户的位置 . 我已将此密钥和一些常规信息添加到我的信息plist中 .
enter image description here

如何在plist文件中使用翻译字符串?

  • 更新 -

我已经有了一个Localizable字符串 . 我只是想知道我可以在plist字符串中使用类似NSLocalizedString(MYSTRING,nil)的东西 . 我知道我可以创建多个info.plist文件进行本地化,但我想知道可能有一个更简单的方法 .

9 回答

  • 4

    您应该使用 InfoPlist.strings 文件来本地化 Info.plist 的值 . 要执行此操作,请转到 File->New->File ,在 iOSResource 选项卡下选择 Strings File ,将其命名为 InfoPlist ,然后创建 . 打开并插入要本地化的 Info.plist 值,如:

    NSLocationWhenInUseUsageDescription = "Description of this";
    

    现在,您可以使用翻译本地化 InfoPlist.strings 文件 . 祝好运!

    编辑:

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

    right side editor

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

    left side editor

    EDIT:

    HereInfo.plist 键本地化的官方文档 .

  • 15

    以上所有内容对我来说都不起作用(XCode 7.3)所以我阅读了Apple如何做的参考,它比上面描述的要简单得多 . 根据Apple的说法:

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

    因此,我创建了一个名为 InfoPlist.strings 的字符串文件,并将其放在"xx"语言的xx.lproj文件夹中(并使用File-> Add Files to ...将其添加到项目中) . 而已 . 不需要键"Localized resources can be mixed" = YES,并且不需要base.lproj或en.lproj中的InfoPlist.strings .

    如果无法在特定于语言的文件中找到密钥,则应用程序将使用Info.plist键值作为默认值 . 因此,我将我的英文值放在Info.plist文件中,并将已翻译的文件放在特定于语言的文件中,进行测试,一切正常 .

    特别是,不需要本地化InfoPlist.strings(在base.lproj,en.lroj和xx.lproj中创建该文件的版本),在我的情况下,这样做不起作用 .

  • 26

    如果某些东西不起作用,请确保添加:

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

    进入info.plist . 在我的例子中,InfoPlist.strings文件被忽略了 .

  • 405

    我强烈建议您阅读Apple的指南,并查看此处列出的WWDC资源:Internationalization and Localization Topics

    要专门回答您的问题,当您向项目中添加新语言
    enter image description here
    时,您有机会选择要包含的InfoPlist文件(如果您有多个目标,则会有多个Info plist文件) . 要获得以下屏幕,您只需点击“本地化”下的内容,然后选择一种新语言来添加支持 .
    enter image description here

    一旦添加,它将在给定语言的相应lproj目录中创建必要的字符串文件 .

    • 编辑 -

    为了清楚起见,iOS将使用plist条目的键作为本地化字符串文件中的键,根据用户当前选择的语言替换Plist文件的字符串 .

  • 0

    提示

    • 请记住,iOS模拟器默认使用您的系统语言 . 请更改iOS模拟器设置中的语言(和区域)以测试您的翻译 .

    • 本地化字符串(请参阅Apple文档here)应该是

    NSLocationWhenInUseUsageDescription = "Description of this";
    

    而不是(引用“......”)

    "NSLocationWhenInUseUsageDescription" = "Description of this";
    
  • 8

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

    它将为您指定语言的info.plist添加密钥 .

  • 3

    对于在尝试添加本地化时遇到info.plist问题的人,例如在Xcode 9中 .

    您需要进入info.plist localiazble,然后单击文件检查器中的localize按钮,如下所示 .

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

    enter image description here

  • 0

    在我的情况下,一切都设置正确但仍然找不到InfoPlist.strings文件 .

    唯一真正奏效的是,到 remove and add the InfoPlist.strings files again 到项目 .

  • 3

    逐步本地化Info.plist:

    • 在x-code中查找文件夹资源(放在root中)

    • 选择文件夹资源

    • 然后按主菜单File-> New-> File ...

    • 在"Resource"字符串文件部分中选择,然后按下一步

    • 然后在另存为字段中仅写入InfoPlist("I" capital和"P" capital)

    • 然后按“创建”

    • 然后选择在Resources文件夹中创建的文件InfoPlist.strings,并在右侧菜单中按下按钮"Localize"

    • 然后从项目导航器中选择项目,并从项目列表中选择项目

    • 在底部的信息选项卡中,您可以使用所需的语言(在“本地化”部分中)

    • 您可以在资源文件夹中看到的语言

    • 要从info.plist文件本地化值("key"),您可以使用文本编辑器打开并获取要本地化的所有键

    • 您可以在任何InfoPlist.strings中编写任何键作为示例,如上例所示

    “NSLocationAlwaysAndWhenInUseUsageDescription”= “布拉布拉”;

    “NSLocationAlwaysUsageDescription”= “blabla2”;

    这一切都工作,你已经本地化了info.plist文件!

相关问题