XLIFF

时间:2016-09-06 13:24:47

标签: xliff

我正在使用命令行工具(ng-xi18n)从我写的角度2应用程序中提取i18n字符串。此命令的输出是messages.xlf文件。来自.po背景,并且不熟悉.xlf,我假设此文件等同于.pot文件(如果我错了,请更正我)。

我假设如果我要翻译我的应用,我必须cp messages.xlf messages.de.xlf获得模板文件(messages.de.xlf)的副本(messages.xlf),我可以在其中翻译每个消息到德语(因此.de.xlf)。

在翻译了一些虚拟文本并运行应用程序后,我看到它按预期工作,所以我放弃了翻译并继续开发应用程序。过了一段时间,我添加了更多的i18n字符串,并最终认为我必须更新我的模板。这就是事情难以维持的地方。我更新了模板messages.xlf文件,很快就想知道如何在不失去进度的情况下将新字符串更新为已翻译的messages.de.xlf文件。

当我使用.po文件进行开发时,由于像poEdit这样的好工具,这没有问题,但我找不到与.xlf类似的内容。在尝试了一些工具后,我认为最好的选择是Lokalize,但我没有找到将模板文件合并到已翻译(但过时)文件的可能性。

到目前为止,这只是一篇文章而不是一个问题,所以这里有一个快速摘要:

  • 处理.xlf文件的工作流程是否真的与我最初想到的.po相似(如上所述),还是完全不同?
  • 我如何更新已翻译的文件?
  • 处理.xlf个文件的最佳做法是什么?
  • 什么是与.xlf合作的概念验证工具?

图片的标题说明:

  • Lokalize手册根本没用。我看到很多功能听起来很有希望,比如:
    • "文件" > "从模板"更新文件。我没有在手册中找到任何解释此功能的内容。如果我点击它,没有任何反应。
    • "同步" > "打开文件进行同步/合并"。这似乎是合并两个类似文件(由多个翻译器)而不是从模板更新翻译文件的工具的功能。即使Lokalize的主同步标签中有一个工具提示,通知我关于" x无法匹配的条目",我也无法找到任何可以将这些不匹配的条目附加到{{1}文件。
    • [更新] 原来,我遇到与this question类似的问题。在将我的Lokalize版本降级为建议的版本后,许多问题(包括问题中提到的问题)都消失了。但是,现在来自模板"更新文件"选项是灰色的,我不知道为什么。
  • 我也尝试过OmegaT,它在我的平台上根本不起作用(Ubuntu 16.04)。
  • [更新] Virtaal非常适合从模板中合并新字符串,但UI一般设计得非常糟糕......
  • 谷歌搜索没有帮助,因为每次点击似乎都与XCode有关。

感谢您提前提供任何帮助,我真的很感激

3 个答案:

答案 0 :(得分:15)

我写了一个名为xliffmerge的小型npm命令行工具。 原则上它也是如此,Roland Oldengarm在他的博客文章中描述了他的gulp任务。 它是免费的,您可以在https://github.com/martinroob/ngx-i18nsupport#readme

查看它

答案 1 :(得分:1)

我见过的最好的工作流程自动化解决方案来自Roland Oldengarm的博客文章"Angular 2: Automated i18n workflow using gulp"。总而言之,在几十行Gulp代码中,他创建了一个工具来处理您面临的一些挑战。具体来说,它运行ng-xi18n来提取消息;创建一个包含复制到目标的源的英文翻译;通过添加新的转换单元,保留现有的转换单元并删除缺失的转换单元来更新现有的转换然后将所有xlf文件公开为TypeScript字符串常量。然后可以导入这些最后的字符串,以便为bootstrapModule提供translation provider选项。

警告:我自己没有使用过这个确切的解决方案(和代码),但我能够将生成的xlf公开为TypeScript字符串,并以类似于他描述的方式在应用程序中使用它们。至于维护翻译,我已经利用IntelliJ IDEAWebStorm)文件比较功能和Counterparts Lite(对于Mac)。我自己的努力仍处于早期阶段,但正在为正在积极开发的应用程序端到端工作。

答案 2 :(得分:-2)

官方Angular文档现已在https://angular.io/docs/ts/latest/cookbook/i18n.html更新为国际化(i18n),其中包括专门针对creating a translation source file with the ng-xi18n tool的部分。