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

4
在Symfony 2的翻译文档中,所有XLIFF示例似乎都使用file.ext作为original文件属性。根据XLIFF 1.2的文档:

原始文件 - 原始属性指定从其中提取元素内容的原始文件的名称。

在Symfony 2的情况下,我不认为我们实际上会提取任何内容进行翻译,但是original属性是必需的。Symfony 2的文档中从未解释过使用file.ext,无论它是否仅是占位符并被忽略,或者是否需要指向实际文件。我最好的猜测是Symfony 2会忽略它,但我还没有机会进行任何测试或查看代码。
第二个问题:指定一组默认翻译是否合适,例如messages.default.yml并将其用作从中派生XLIFF翻译的原始文件?
对于与Web应用程序一起使用的翻译,XLIFF似乎有点过度设计了...

对于你的第二个问题,我猜创建 messages.default.yml 应该是可以的,但我不认为有必要。你可以在 parameters.ini 中指定默认语言环境,这应该是从中获取翻译的文件。 - cheesemacfly
好的,没错,我可以(而且应该)在应用程序的配置中指定默认区域设置。 - Sean Quinn
我不知道交响曲2是什么,但这个问题仍然是一个好问题(差不多10年后)。如果没有所谓的“源”文件,为什么“原始”属性是必填的,我们应该放什么进去呢。 - Greg Woods
我不知道Symphony 2是什么,但这个问题仍然是一个好问题(将近10年后)。如果没有“源”文件,为什么“original”属性是强制性的,我们应该放什么在里面? - Greg Woods
1个回答

5
尽管在Xliff 1.2规范和模式中,<file>original属性是必需的,但您可以忽略它并将一个虚拟字符串作为其值,以使您的文件通过模式验证。这个属性的常见用途之一是当从多个文档(.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>

我认为对于本地化小型Web应用程序而言,使用Xliff可能有点过度,但是这种格式可以说是目前本地化数据交换的唯一行业标准文件格式。这使得它在大规模本地化实施中非常受欢迎,无论是简单的源/目标结构化文件还是像SDL Idiom Worldserver等翻译管理系统中使用的高度定制和量身定制的文件。

此外,Xliff与 OAXAL系列的其他标准文件格式兼容。


1
感谢您提供的信息丰富的回复!我在开发过程中有点避免本地化的话题,部分原因是因为我想使用Xfliff,但它也非常令人生畏。很高兴知道“original”文件属性或多或少是任意的。 - Sean Quinn
1
随时可以。你说得对。除了基础知识外,不要太关注规范。它只是充满了很少使用的功能。总的来说,简化的Xliff可以简化可扩展的本地化工作。常用功能在这里讨论:http://www.opentag.com/xliff.htm。 - Shervin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接