我应该在Symfony 2中使用什么作为XLIFF原始文件?

时间:2013-02-25 16:12:48

标签: symfony localization internationalization xliff

在Symfony 2的documentation regarding translations中,所有XLIFF示例似乎都使用file.ext作为original文件属性。来自XLIFF 1.2的文档:

  

原始文件 - 原始属性指定元素内容所具有的原始文件的名称   已被提取。

在Symfony 2的案例中,我不相信我们实际上是在提取任何翻译内容,但original属性是必需的。在Symfony 2的文档中从不解释file.ext的用法,无论它只是一个占位符而被忽略,还是需要指向一个实际的文件。我最好的猜测是它被Symfony 2忽略了,但我没有机会进行任何测试或在代码中挖掘。

第二个问题:指定一组默认翻译是否恰当,例如messages.default.yml并将其用作从中导出XLIFF翻译的原始文件?

对于与网络应用程序一起使用的翻译,XLIFF似乎有点像矫枉过正......

1 个答案:

答案 0 :(得分:4)

虽然Xliff 1.2规范和架构中需要original <file>属性,但您可以忽略它并将虚拟字符串作为其值,以便您的文件通过架构验证。

此属性的一个常见用途是,提取多个文档(.properties文件,gettext文件等)中的字符串并将其重新格式化为Xliff trans-units,以便从每个单独的文件都放在相应的单个<file>标记下。 original属性可用于将原始文件名保存在包含多个<file>标记的Xliff文件中:

<?xml version="1.0" encoding="utf-8" ?>
<xliff version="1.1" xml:lang='en'>
 <file source-language='en' target-language='de' datatype="plaintext" original="Sample.po">
  ...
   <body>
    <trans-unit id="1" restype="button" resname="IDC_TITLE">
     <source>Title</source>
    </trans-unit>
    <trans-unit id="2" restype="label" resname="IDC_STATIC">
     <source>&amp;Path:</source>
    </trans-unit>
  ...
 </file>
 <file source-language='en' target-language='de' datatype="plaintext" original="Sample.properties">
    <trans-unit id="1" restype="label" resname="IDC_LABEL">
  ...
   </body>
 </file>
</xliff>

我同意使用Xliff本地化小型Web应用程序通常有点过分,但这种格式可以说是目前本地化数据交换的唯一行业标准文件格式。这使得它非常受大规模本地化实施的欢迎,既可以是简单的源/目标结构文件,也可以是像SDL Idiom Worldserver这样的翻译管理系统中使用的大量定制和定制的文件。

此外,Xliff与OAXAL family的其他标准文件格式之间存在兼容性。