iPhone Settings.bundle的本地化
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iPhone Settings.bundle的本地化相关的知识,希望对你有一定的参考价值。
出于某种原因,我无法让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语言时,为什么我在设置中看不到法语文本?
提前致谢!
对我来说,问题是分开了!
在localizable.strings中,如果省略“;”,则会出现运行时错误,但在Root.strings中,您没有收到任何警告,您可以正常运行,但它不会起作用!
所以请仔细检查以确保每个键都标点:使用分号对值组!
我会继续回答我自己的问题,因为我通过测试和失败解决了问题。希望这将有助于未来的其他人。
首先,我认为我的Root.plist
文件可能已损坏。我不确定为什么,但我完全删除了Settings.bundle
,并重新创建它以确定。
其次,也许最重要的是,主要问题是root.strings
文件中的“关键”与key
中的“Root.plist
”字段不匹配,它实际上与“Title
”字段相匹配。
一旦我对Root.strings
文件进行了这些更改,它就开始工作了。
您需要做的就是在设置之后保留(或添加,如果它不存在)Root.plist中的“Strings Filename”。
然后,添加Value“Root”(或文件名和翻译)以使创建的lang.lproj转换功能正常。
在Xcode 5中,仍然没有明显的方法来本地化Settings.bundle。
问题
Xcode不允许您本地化仅显示的文件,因为它是直接在Xcode中显示的文件夹内的文件(因此树中的蓝色文件夹图标)。
解决方案:
- 右键单击Root.strings文件,然后选择“在Finder中显示”
- 项目清单
- 将Root.strings文件向上移动一个文件夹,以使en.lproj文件夹为空,并将Root.strings文件的Cmd-Drag文件放在Root.plist旁边。
- 删除现在为空的en.lproj
- 回到Xcode,请注意树将反映您现在所做的更改
- cmd-将树外部的文件拖到设置包外部,以便它显示在源代码旁边。 不要复制文件
- 将出现一个对话框,询问您如何处理该文件。 不要选中复选框来复制文件(您需要将其作为参考) 不要选择包含strings-file的目标(settings.bundle已分配给正确的目标)
- 在文件检查器中,您现在可以选择本地化文件并将语言添加到本地化。文件将正确放置在settings.bundle中,树也将自动反映这些更改。
经过一些反复尝试激活本地化后,以下步骤对我有用:
- 关闭xcode
- 将设置包拖放到桌面上(或任何地方)
- 打开包内容
- 将Root.strings拖动到en.lproj文件夹中
- 复制en.lproj文件夹并重命名为您想要的任何语言(使用双字母代码,即fr.lproj)
- 将原始设置包替换为新设置(不打开xcode)。
- 现在打开xcode,新的文件和文件夹应该在那里
现在删除旧的应用程序并运行xcode,在模拟器和设备上正常工作。
注意:关闭xcode,更新xcode外部的重复设置包并仅替换更新后的更新将有所帮助。
在我的情况下,似乎"Strings Filename"
在"Root"
的属性列表视图中被设置为Root.plist
,但是当在源代码视图中查看文件时,实际上"StringsTable"
指向"Root"
。解决方案是添加"Strings Filename"
指向"Root"
的另一个条目。 (我也尝试删除上一个条目,但之后它停止工作,所以你需要两个。)
以上是关于iPhone Settings.bundle的本地化的主要内容,如果未能解决你的问题,请参考以下文章
iPhone Xcode Settings.bundle Plist
如何本地化 settings.bundle 中的第二个 plist 文件?
我可以隐藏/禁用 Settings.bundle 中的字段吗?