为什么 Angular 使用 XLIFF 1.2 而不是 XLIFF 2?

Why Angular uses XLIFF 1.2 instead of XLIFF 2?

我正在开始一个新的 Angular 6 项目(而且我也是 Angular 的新手 ^^)所以我可以自由选择。来Internalization的时候,看了之后选择使用Angularnative I18n:

无法在模板文件之外使用翻译这一事实可以通过我们阶段的一些解决方法来解决

XLIFF 学习曲线让我想到 XLIFF 1.2 与 XLIFF 2 的问题。阅读后the differences between XLIFF 1.2 and XLIFF 2, it seems that XLIFF 2 solved a lot of issues and is more future-proof than XLIFF 1.2 which is now a legacy format according to Wikipedia

因此,为什么 Angular 专注于 XLIFF 1.2 而不是 XLIFF 2? 我注意到:


至于我们的项目,我们从 XLIFF 2 开始,但我很想切换到 XLIFF 1.2

关于 为什么 ,你的问题很主观,但 Angular 并不孤单。 XCode 也仍然使用 XLIFF 1.2。 Symfony 最近添加了 v2 支持,但是 docs still reference 1.2.

我认为 Web 框架的采用速度很慢,因为这种格式并没有增加 Web 框架以前缺乏的功能。它提供了很多可扩展性的范围,但尽管听起来很棒,但这只是意味着人们可以按照他们认为合适的方式使用该格式。我的意思是 <note category="file-source">file.js:93</note> 很棒,只是 "file-source" 不是规范的一部分,所以不是很跨平台。

也许这种格式在翻译行业做得更好,但网络框架并不倾向于使用这种格式的许多高级功能。在大多数情况下,XLIFF 文件用作索引字符串的相当笨的容器,v1.2 和 v2 一样。

如果一个框架开始使用新的 XLIFF 2 似乎很容易,但如果您已经有成千上万的人愉快地使用 1.2,我认为没有很大的升级动力。

我的建议是确保您可以根据需要随时切换文件格式。如果 1.2 可以让您访问您喜欢的工具,请务必使用它,但如果 Angular 有一天决定弃用 1.2 并移至 v2,您将需要制定计划。有支持这两种格式的编辑器。

我想指出 2.0 官方 specification changelog 中的那句话:

In response to comment 002, the specification now clearly indicates that backwards compatibility with XLIFF 1.2 is not required.

您还可以阅读同一更新日志:

In response to comment 038, modules, , and extensions have been prohibited on and lower structural levels.

因此文件可能无法验证这两种格式。

Angular 现在接受 XLIFF 2 文件(参见 here