Symfony 如何构造XLIFF导出以供翻译器使用?

Symfony 如何构造XLIFF导出以供翻译器使用?,symfony,translation,xliff,Symfony,Translation,Xliff,主要问题是:我应该如何构建XLIFF的可用结构 我所拥有的: 一个Symfony 3.4项目,我想将可翻译内容导出为XLIFF。我不是指捆绑翻译,而是来自数据库的动态内容 到目前为止,我已经编写了一个包,它使用messagecatalog收集内容,使用XliffFileDumper编写XLIFF文件 这给了我一个平面XLIFF,其中包含要翻译的内容。我想这不是很有用。 示例:页面具有内容。目前,我只是收集平面XLIFF中的所有内容。如果将此文件交给翻译人员,他/她将不知道哪些内容属于哪个页面。这

主要问题是:我应该如何构建XLIFF的可用结构

我所拥有的:

一个Symfony 3.4项目,我想将可翻译内容导出为XLIFF。我不是指捆绑翻译,而是来自数据库的动态内容

到目前为止,我已经编写了一个包,它使用messagecatalog收集内容,使用XliffFileDumper编写XLIFF文件

这给了我一个平面XLIFF,其中包含要翻译的内容。我想这不是很有用。 示例:页面具有内容。目前,我只是收集平面XLIFF中的所有内容。如果将此文件交给翻译人员,他/她将不知道哪些内容属于哪个页面。这很糟糕,对吧

我目前使用的messagecatalog=>XliffFileDumper方法在这方面似乎有点有限。我可以添加元数据注释,但不能使用组作为示例。在一个单元中添加多个段似乎也是不可能的。 例如,我可以设置一个域,该域的结果是标记domain=content

我很乐意用这种方式构建一个有用的XLIFF,但是如果不能,请告诉我。我需要编写一个定制的XLIFF转储程序

想法: 我可以使用一个域每页,这在许多文件的结果?良好做法? 我可以在元数据/注释中添加有关父页面的信息。译者甚至可以利用它吗

文件结构的最佳实践是什么?
如果有人知道一个symfony bundle很有用,请告诉我。

鉴于您所述的当前转储程序限制,您无法构建基于最佳实践的有用XLIFF

如果您打算改进转储程序,我建议您先阅读本文

基于以上内容,将新转储程序的输出参数化为XLIFF 1.2、XLIFF 2.1或XLIFF 2.0。 XLIFF 2.1是向后兼容XLIFF 2.0的最新版本,但不向后兼容XLIFF 1.2。 CAT计算机辅助翻译工具中对XLIFF 1.2的支持仍然大于XLIFF 2,但XLIFF 1.2不再由OASIS技术委员会维护

您的新转储程序应该支持使用源资产元数据对提取的文件/组/单元进行递归分组和修饰,请参阅上面的最佳实践文档,了解如何进行此操作。如果您这样做,CAT工具将能够向翻译人员显示它,翻译人员将发现它非常有用。 基本上,每个结构元素都有一个专用属性来存储提取资源的id、@original on file、@name on group和unit。U还可以在@type中存储私有nmtoken:前缀字符串。如果这还不够,您可以在框架或资源数据模块中存储更多的往返数据。。两者可以是内部的,也可以是外部的

还建议从XLIFF 2 core开始,仅在core往返成功后添加模块数据

一个非常有用且易于实现的模块是fs模块,它使翻译人员更容易生成HTML预览。 注释不应仅用于翻译人员可读的说明/警告/注释的往返元数据

正如您所猜测的,转储程序应该能够创建层次结构。你不必费心去分割单元。但创建具有更多线段的单元是可以的。再次查看最佳实践文档,看看它什么时候有意义。。您应该始终能够在任何单元内接收回不同数量的段。但内容不能跨单元边界迁移


单元内的分段编码是XLIFF 1.2和XLIFF 2之间的主要区别。您需要查看规格以了解详细信息。

谢谢,我想我现在知道该怎么做了。有一个问题仍然悬而未决:我应该将需要导入的元数据放在哪里?例如,实体/表名、ID、。。。我目前正在使用注释,但现在我发现这不是正确的位置。我更新了答案,详细说明了往返元数据的放置位置,并将EMBP引用更改为同时发布的链接。。