2017-02-24 54 views
4

这里是我们的本地化工作流程:在Interface BuilderXcode的本地化:请翻译同步与故事板

  1. 建立的东西
  2. 本地化导出项目
  3. 翻译着眼于XLIFF文件和新的字符串适用的翻译(只有新翻译的字符串)
  4. 导入XLIFF到项目

这工作˚F用于建立新的东西。但是,如果开发者更改了已经翻译的故事板中的标签中的文本,他将不得不记住删除该标签的翻译,因此翻译者将该字符串看作未翻译的。如果开发人员忘记删除该翻译,翻译将是错误的,这是一个很难找到的错误。

当代码被定位是这样的:

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

的串("Some text in english")限定在XLIFF-文件的密钥,这意味着,如果该字符串被改变了,那么导出的XLIFF文件将自动拥有需要翻译的新字符串。

我试图解决与Xcode的“出口本地化...”功能,与genstrings的问题,并与BartyCrounch,但所有的方法似乎使用的UI元素的Object ID作为.strings-文件的关键。这意味着它不会对实际字符串中的更改做出反应。

到目前为止,我发现的唯一解决方案是通过IBOutlet在代码中设置每个需要翻译的字符串,但这是一个相当全面的解决方案。

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

+1

我希望我对这个问题的解决方案可以帮助您。检查出来[iOS本地化:动态地本地化视图,而不会与故事板/笔尖字符串文件混淆](http://stackoverflow.com/questions/42881255/ios-localization-localize-views-dynamically-without-messing-with-the -storyboard) – MNassar

回答

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

正如你所看到的diff在图片中,git已经显示了什么变化,那就是你应该再次翻译的地方。

git with translations