【问题标题】:Localization of the iPhone Settings.bundleiPhone Settings.bundle 的本地化
【发布时间】:2011-03-08 00:02:49
【问题描述】:

由于某种原因,我无法让 Settings.bundle 识别我的其他语言。我一定遗漏了一些明显的东西,但我无法弄清楚。这是我得到的:

XCode 中的项目结构:

Root.plist 文件:

Root.plist file http://img227.imageshack.us/img227/571/screenshot20100624at334.png

法语 Root.strings 文件

french Root.strings file http://img121.imageshack.us/img121/571/screenshot20100624at334.png

根据我所阅读的所有内容,我相信项目结构是正确的。 Root.plist 中的 StringsTable 匹配各个 .strings 文件的名称,并且 Root.plist 中每个项目的 Key 在 .strings 文件中也有匹配。

当我更改默认 iPhone 语言时,为什么我在设置中看不到法语文本?

提前致谢!

【问题讨论】:

    标签: iphone ios xcode localization settings.bundle


    【解决方案1】:

    我会继续回答我自己的问题,因为我自己通过测试和失败解决了这个问题。希望这会在未来对其他人有所帮助。

    首先,我认为我的Root.plist 文件可能已损坏。我不确定为什么,但我完全删除了Settings.bundle,并重新创建了它以确保。

    其次,也许最重要的是,主要问题是root.strings 文件中的“密钥”与Root.plist 中的“key”字段不匹配,它实际上与“Title”匹配“ 场地。

    一旦我对Root.strings 文件进行了这些更改,一切就开始起作用了。

    【讨论】:

    • 这确实有道理,实际上。 Key 对应于您在应用程序中标识每个设置的唯一标识符。标题对应于 Settings.app 显示的字符串。
    【解决方案2】:

    您所要做的就是在设置之后在 Root.plist 中保留(或添加,如果它不存在)“字符串文件名”。

    然后,添加值“Root”(或文件名和翻译)以使创建的 lang.lproj 翻译正常运行。

    【讨论】:

      【解决方案3】:

      在多次尝试激活本地化后,以下步骤对我有用:

      1. 关闭xcode
      2. 将设置包拖放并复制到桌面(或任何地方)
      3. 打开捆绑包内容
      4. 将 Root.strings 拖入 en.lproj 文件夹
      5. 复制 en.lproj 文件夹并重命名为 任何你想要的语言(使用 2 字母代码,即 fr.lproj)

      6. 用新的设置包替换原来的设置包(没有 打开 xcode)。

      7. 现在打开 xcode 和新的文件和文件夹 应该在那里

      现在删除旧应用并运行 xcode,在模拟器和设备上都可以正常工作。

      注意:关闭 xcode,更新 xcode 之外的重复设置包并仅将更新的内容替换回来会有帮助。

      【讨论】:

        【解决方案4】:

        在我的例子中,"Strings Filename" 似乎在Root.plist属性列表视图 中设置为"Root",但是在源代码视图,其实是"StringsTable"指向"Root"。解决方案是添加另一个条目,其中"Strings Filename" 指向"Root"。 (我也尝试删除之前的条目,但它停止工作,所以你需要两者。)

        【讨论】:

          【解决方案5】:

          对我来说,问题是省略分号!

          在 localizable.strings 中,如果省略 ";",则会出现运行时错误,但在 Root.strings 中,您不会收到任何警告,您可以正常运行,但它不起作用!

          因此,请仔细检查以确保用分号标出每个键值对!

          【讨论】:

          • 哦,是的,我似乎在一个地方忘记了引号 (") - 没有警告,没有错误,它只是停止工作。感谢您的提示!
          • 啊,“;”,我以前没有意识到这一点!你救了我。
          • 如果您在分号周围有其他意外情况,也会发生这种情况。我遇到的问题是我用来生成 .strings 文件的脚本在分号之前随机添加了一个不必要的逗号(“,;”而不是“;”)。
          • Fudddggggeee。我无法为我的生活解决为什么它不起作用。经典的缺少分号!谢谢!
          【解决方案6】:

          在 Xcode 5 中仍然没有明显的方法来本地化 Settings.bundle。

          问题

          Xcode 不允许您本地化仅显示的文件,因为它是文件夹内的文件,直接显示在 Xcode 中(因此树中的蓝色文件夹图标)。

          解决方案:

          1. 右键单击 Root.strings 文件并选择“在 Finder 中显示”
          2. 列表项
          3. 将 Root.strings 文件上移一个文件夹,使 en.lproj 文件夹为空,并且 Cmd-Drag Root.strings 文件位于 Root.plist 旁边。
          4. 删除现在为空的 en.lproj
          5. 返回 Xcode,注意树将反映您现在所做的更改
          6. cmd 将树中的文件拖到设置包之外,使其显示在源代码旁边。
            • 不要复制文件
          7. 将出现一个对话框,询问您如何处理该文件。
            • 不要选中复选框来复制文件(你需要这个作为参考)
            • 不要选择包含字符串文件的目标(settings.bundle 已分配给正确的目标)
          8. 在文件检查器中,您现在可以选择本地化文件并将语言添加到本地化中。文件将正确放置在 settings.bundle 中,树也会自动反映这些更改。

          【讨论】:

          • 这是一个非常聪明的解决方案。我仍然必须手动创建原始字符串文件,但此解决方案节省了 很多 复制文件和创建文件夹等的时间。
          猜你喜欢
          • 1970-01-01
          • 2023-03-18
          • 1970-01-01
          • 2011-02-09
          • 2012-08-25
          • 2015-02-20
          • 1970-01-01
          • 1970-01-01
          • 2011-05-20
          相关资源
          最近更新 更多