因此,我使用 Use Base Internationalization 在 Xcode 中本地化了一个故事板。
我进去翻译了字符串文件中的所有字符串。耶。那花了很长时间。
现在我在故事板的基础文件中添加了一个新元素。它里面有一个标签,里面有一个我需要国际化的字符串。我保存了它,构建了它,等等。但是在我漂亮的字符串文件中找不到这个新元素。
请不要告诉我我现在必须手动添加我的所有元素?
因此,我使用 Use Base Internationalization 在 Xcode 中本地化了一个故事板。
我进去翻译了字符串文件中的所有字符串。耶。那花了很长时间。
现在我在故事板的基础文件中添加了一个新元素。它里面有一个标签,里面有一个我需要国际化的字符串。我保存了它,构建了它,等等。但是在我漂亮的字符串文件中找不到这个新元素。
请不要告诉我我现在必须手动添加我的所有元素?
在 IB 的检查器中手动查找对象 ID(在类部分下)。自己手动编写这些新元素。
我这样解决了这个问题。
一一取消选中本地化实用程序面板的复选框。
Xcode 会问,你想删除 Main.storyboard 的英文(语言)本地化吗?
对话框中有另一个复选框,不要选中它
单击删除。
再次选择您的故事板,并重新检查每种语言
Xcode 会说文件已经存在
选择替换文件
Xcode 会自动从您更新的 UI 中重新生成字符串文件并替换您的文件。
祝你好运。
我发现在单独的电子表格中跟踪所有字符串更容易,然后从那里自动为每种语言生成 .strings 文件。
您仍然需要在 2 个位置(在 xcode 和电子表格中)跟踪翻译键,但至少每次要添加一些字符串时,您不必编辑或合并所有 Localizable.strings 文件。
在此处查看带有 VBA 宏的示例 Excel 电子表格:http: //members.home.nl/bas.de.reuver/files/multilanguage.zip
在等待 Xcode 6 和他的新本地化功能(我希望能解决这个 l10n 更新的痛点)的同时,我们理论上可以自动化这些步骤(从未尝试过)
find
/xargs genstrings
和ibtool
这个要点脚本(不容易发音:)似乎也很有用(再次尚未测试)
要将字符串文件与用户界面文档中的新内容重新同步,请使用 ibtool 命令的 --generate-stings-file 选项来生成新的字符串文件。然后,手动将新文件合并到现有的本地化字符串中。
这很蹩脚,但你去吧。您可以使用 FileMerge 之类的工具来帮助您解决差异。(我们有一组脚本可以读取字符串文件并以这种方式合并它们;编写这样的东西并不难。)
我找到了另一种蹩脚的解决方案,但它比 Xcode 发行说明中的解决方案更蹩脚;勾选本地化语言关闭,从磁盘中删除文件,然后再次勾选。这将重新创建.strings
文件。
您也可以考虑将翻译保存在一个干净的 XML 文件中,并让这个 Maven 插件在每次构建期间生成您的字符串文件:https ://github.com/hoereth/i18n-maven-plugin