【问题标题】:Can't localize info.plist strings无法本地化 info.plist 字符串
【发布时间】:2014-03-11 06:06:43
【问题描述】:

我需要本地化 info.plist 的两个键:NSLocationUsageDescriptionNSCameraUsageDescription。所以我尝试创建一个名为 InfoPlist.strings 的新文件,然后将其本地化,但应用程序始终显示存储在 info.plist 文件中的字符串。怎么了?

来自Information Property List Key Reference的官方文档

本地化的值不存储在 Info.plist 文件本身中。 相反,您将特定本地化的值存储在 名为 InfoPlist.strings 的字符串文件。你把这个文件放在 用于存储的特定语言项目目录 相同本地化的其他资源。的内容 InfoPlist.strings 文件是您想要本地化和 适当转换的值。查key的套路 Info.plist 文件中的值采用用户的语言首选项 考虑并返回密钥的本地化版本(从 适当的 InfoPlist.strings 文件)存在时。如果本地化 键的版本不存在,例程返回存储的值 在 Info.plist 文件中。

我的 InfoPlist.strings 文件:

NSCameraUsageDescription = "hello";
NSLocationUsageDescription = "hello hello";

【问题讨论】:

标签: ios cocoa-touch info.plist


【解决方案1】:

请检查生成的应用程序包,该文件是否真的存储在那里,它是否放置在正确的位置。通常这是缺少的步骤。

只需进入项目设置,打开“构建阶段”,看看是否 该文件可以在“复制捆绑资源”中找到

【讨论】:

  • 好点!对我来说 InfoPlist.string 被忽略,直到我手动将它添加到 Copy Bundle Resources
【解决方案2】:

该文件需要位于指示语言的目录中,例如 en.lproj

【讨论】:

    【解决方案3】:

    事实上,我的问题是我拼错了 NSLocationWhenInUseUsageDescription 常量,所以当然没有考虑到它。

    【讨论】:

    • 哈哈,只是想评论一下:单词有错字,逐个字母检查单词
    【解决方案4】:

    有时你必须先进行清洁,点击菜单 -> 产品 -> 清洁。

    【讨论】:

      【解决方案5】:

      对于您的应用程序支持的每种语言,您的 plist 文件可以有多个版本。 在 Utilities\File Inspector(右侧)中点击“Localize”:

      然后选择您想要拥有自己版本的语言:

      之后,您将能够输入每个 plist 文件并根据需要进行编辑。

      【讨论】:

      • 好的,我有一个名为“someinfo.plist”的文件,它作为“info.plist”工作,但需要在项目设置中指定(“打包”部分)。本地化时如何指定路径?
      • 它是自动的。对于每种语言,您的应用程序将使用相关的 plist。如果没有(没有当前语言的 plist 文件)-您的应用将使用基本的。
      【解决方案6】:

      从 iOS 10 开始,您需要将隐私密钥添加到您的 Info.plist。

      <key>NSPhotoLibraryUsageDescription</key>
      <string>Please allow access to the photo library.</string>
      

      当然,您仍然需要本地化这些键(并且您无法本地化应用程序的 Info.plist)。因此,您还可以将这些隐私密钥添加到 InfoPlist.strings 中,然后再进行本地化。

      "NSPhotoLibraryUsageDescription" = "Please allow access to the photo library.";
      

      【讨论】:

        【解决方案7】:

        InfoPlist.strings 不考虑你方案的应用区域,而是设备中设置的区域!在您的设备上:Settings-> General -> Language &amp; Region,检查 iPhone 语言是否是您喜欢的语言。

        【讨论】:

        • 是的,这很重要!
        【解决方案8】:

        在我的情况下,与来自另一个构建目标的其他 InfoPlist.strings 文件发生冲突。

        【讨论】:

          【解决方案9】:

          这取决于您的 iPhone 或 iPad 的语言,它会自动从“InfoPlist.strings”文件中选择描述。

          【讨论】:

          • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
          猜你喜欢
          • 1970-01-01
          • 2020-06-04
          • 1970-01-01
          • 2014-11-02
          • 1970-01-01
          • 2012-07-26
          • 1970-01-01
          相关资源
          最近更新 更多