iPhone Settings.bundle的本地化

时间:2010-06-24 19:45:29

标签: iphone ios xcode localization settings.bundle

出于某种原因,我无法让Settings.bundle识别我的其他语言。我必须遗漏一些明显的东西,但我无法弄明白。这就是我所拥有的:

XCode中的项目结构:

XCode Screen Shot

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语言时,为什么我在设置中看不到法语文本?

提前致谢!

6 个答案:

答案 0 :(得分:16)

对我来说,问题是出现了分号!

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

请仔细检查,确保每个键都标点:带分号的值对!

答案 1 :(得分:13)

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

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

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

我对Root.strings文件进行了这些更改后,一切都开始有效了。

答案 2 :(得分:9)

您需要做的就是在设置完成后,在Root.plist中保留(或添加,如果不存在的话)“Strings Filename”。

Check the image with example

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

答案 3 :(得分:4)

在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中,树也将自动反映这些更改。

答案 4 :(得分:2)

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

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

  6. 将原始设置包替换为新设置(不带 打开xcode )。

  7. 现在打开xcode 以及新文件和文件夹 应该在那里
  8. 现在删除旧应用程序并运行xcode,在模拟器和设备上正常工作。

    注意:关闭xcode,更新xcode外部的重复设置包并仅替换更新后的内容将有所帮助。

答案 5 :(得分:2)

在我的情况下,似乎"Strings Filename""Root"属性列表视图中设置为Root.plist,但是当查看< strong>源代码视图,实际上"StringsTable"指向"Root"。解决方案是添加另一个"Strings Filename"指向"Root"的条目。 (我也尝试删除上一个条目,但之后它停止工作,所以你需要两个。)