Xcode本地化:保持翻译与Storyboard同步

时间:2017-02-24 15:07:13

标签: ios swift xcode localization

这是我们的本地化工作流程:

  1. 在界面构建器中构建内容
  2. 导出项目以进行本地化
  3. Translator查看xliff文件并应用新字符串的翻译(仅限新的未翻译字符串)
  4. 将xliff导入项目
  5. 这适用于构建新内容。但是,如果开发人员更改了已经翻译的故事板中标签中的文本,他将不得不记住删除该标签的翻译,因此翻译人员将该字符串视为未翻译。如果开发人员忘记删除该翻译,则翻译将是错误的,这是一个非常难以找到的错误。

    当代码本地化时:

    var testString = NSLocalizedString("Some text in english", comment: "just a test string")
    

    字符串("Some text in english")定义xliff文件中的键,这意味着如果更改了字符串,则导出的xliff文件将自动拥有一个需要翻译的新字符串。

    我尝试用xcode解决问题"导出本地化..."函数,genstringsBartyCrounch,但所有方法似乎都使用UI元素Object ID作为.strings文件的键。这意味着它不会对实际字符串中的更改做出反应。

    我到目前为止找到的唯一解决方案是通过IBOutlet在代码中设置需要在故事板中翻译的每个字符串,但这是一个非常全面的解决方案。

    您知道解决此问题的任何工具或方法吗?

1 个答案:

答案 0 :(得分:1)

我尝试了你所说的并明白你的意思。我认为解决方案很简单。

首先,我在故事板中添加了一个新按钮,命名为"测试"。然后我用中文翻译,导入翻译。改变了"测试"到" GoGo"并再次导出翻译。 xliff部分已从

更改
<trans-unit id="jso-qF-Z1t.title">
        <source>Test</source>
        <target>测试</target>
        <note>Class = "NSButtonCell"; title = "Test"; ObjectID = "jso-qF-Z1t";</note>
</trans-unit>

<trans-unit id="jso-qF-Z1t.title">
        <source>GoGo</source>
        <target>测试</target>
        <note>Class = "NSButtonCell"; title = "GoGo"; ObjectID = "jso-qF-Z1t";</note>
</trans-unit>

下一步做什么

我不知道是否有现成的工具。但你可以使用Git,因为它总能找到差异。

步骤:

  1. 将您的翻译文件夹添加到git
  2. 提交当前文件
  3. 从Xcode导出新翻译
  4. 使用git查看差异
  5. 正如您在图片中看到的那样,git已经显示了哪些更改,您应该再次翻译。

    git with translations