XLIFF,版本控制或翻译更新过程(差异杠杆步骤)

时间:2011-12-14 16:32:39

标签: java c# localization xliff

我正在考虑使用 XLIFF 来标准化企业内的本地化工作。 我是xliff的新手并且已经做了一些研究我想到了以下使用它的一般过程:

  1. 从开发项目资源中提取字符串(.resx为.Net, .properties for Java) - 我发现的好方法就是使用它 来自Okapi Localization Toolbox的Rainbow - 并使用“Utilities => 翻译套件创作“命令
  2. 然后翻译提取的文件,如下所述 http://www.opentag.com/okapi/wiki/index.php?title=How_to_Translate_XLIFF_Documents 例如,使用Virtaal应用程序
  3. 最后将翻译后的xliff转换回原始格式(resx / properties) - 这可以与Rainbow一起使用“Utilities => Translation Kit Post-Processing”
  4. 到目前为止一切都很清楚,但是我想知道在添加或修改字符串资源时最佳做法是什么?每当有一个新字符串以原始格式(resx / properties)添加到字符串资源时,我宁愿不要重新翻译所有资源

    如果有版本支持翻译,这也会很棒 - 如果用相同的版本标记多语言翻译,则会合并多个语言翻译(提供相同的字符串集)。添加新字符串或修改现有字符串时会更新版本。

    这是否有现成的解决方案?或者我们必须自己建立什么?

    修改

    我在Okapi Rainbow的Pipeline库中找到了 Diff Leverage 步骤,但我很难让它工作。这是两个xliff文件。第一个是用法语翻译的资源的第一个版本,第二个是从新版资源生成的文件,其中包含以下更改:

    • 更新了1个字符串(AdminTitleResource现在是管理资源)

    • 删除了1个字符串(HomeLinkResource已消失)

    • 添加了2个新字符串(项目和公司)

    但是,运行Diff Leverage管道不会产生翻译的智能合并。有什么想法吗?

    以前版本资源的翻译xliff:

    <?xml version="1.0" encoding="windows-1252"?><xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:okp="okapi-framework:xliff-extensions" version="1.2">
    <file original="/Messages.resx" source-language="en-us" target-language="fr-fr" datatype="xml">
    <body>
    <trans-unit id="1" resname="AccessDenied" xml:space="preserve" approved="yes">
    <source xml:lang="en-us">Access denied</source>
    <target xml:lang="fr-fr" state="translated">Accès refusé    </target>
    <note>Error message</note>
    </trans-unit>
    <trans-unit id="2" resname="AdminTitleResource" xml:space="preserve" approved="yes">
    <source xml:lang="en-us">Administration</source>
    <target xml:lang="fr-fr" state="translated">Administration</target>
    <note></note>
    </trans-unit>
    <trans-unit id="3" resname="HomeLinkResource" xml:space="preserve" approved="yes">
    <source xml:lang="en-us">Main page</source>
    <target xml:lang="fr-fr" state="translated">Page web principale</target>
    <note></note>
    </trans-unit>
    <trans-unit id="4" resname="SelectCategoriesResource" xml:space="preserve" approved="yes">
    <source xml:lang="en-us">Categories</source>
    <target xml:lang="fr-fr" state="translated">Catégories</target>
    <note></note>
    </trans-unit>
    <trans-unit id="5" resname="SelectConfigResource" xml:space="preserve">
    <source xml:lang="en-us">Configuration</source>
    <target xml:lang="fr-fr" state="needs-review-translation">Paramètres</target>
    <note></note>
    </trans-unit>
    <trans-unit id="6" resname="SelectGroupsResource" xml:space="preserve">
    <source xml:lang="en-us">User groups</source>
    <target xml:lang="fr-fr" state="needs-review-translation">Utiliser le groupe</target>
    <note></note>
    </trans-unit>
    </body>
    </file>
    </xliff>
    

    如何只使用需要翻译的字符串获取XLIFF文件?

    上面列出的更改的新文件:

    <?xml version="1.0" encoding="windows-1252"?><xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:okp="okapi-framework:xliff-extensions" version="1.2">
    <file original="/Messages_v2.resx" source-language="en-us" target-language="fr-fr" datatype="xml">
    <body>
    <trans-unit id="1" resname="AccessDenied" xml:space="preserve">
    <source xml:lang="en-us">Access denied</source>
    <target xml:lang="fr-fr">Access denied</target>
    <note>Error message</note>
    </trans-unit>
    <trans-unit id="2" resname="AdminTitleResource" xml:space="preserve">
    <source xml:lang="en-us">Administration Resource</source>
    <target xml:lang="fr-fr">Administration Resource</target>
    <note></note>
    </trans-unit>
    <trans-unit id="3" resname="SelectCategoriesResource" xml:space="preserve">
    <source xml:lang="en-us">Categories</source>
    <target xml:lang="fr-fr">Categories</target>
    <note></note>
    </trans-unit>
    <trans-unit id="4" resname="SelectConfigResource" xml:space="preserve">
    <source xml:lang="en-us">Configuration</source>
    <target xml:lang="fr-fr">Configuration</target>
    <note></note>
    </trans-unit>
    <trans-unit id="5" resname="SelectGroupsResource" xml:space="preserve">
    <source xml:lang="en-us">User groups</source>
    <target xml:lang="fr-fr">User groups</target>
    <note></note>
    </trans-unit>
    <trans-unit id="6" resname="Project" xml:space="preserve">
    <source xml:lang="en-us">Project</source>
    <target xml:lang="fr-fr">Project</target>
    <note></note>
    </trans-unit>
    <trans-unit id="7" resname="Company" xml:space="preserve">
    <source xml:lang="en-us">Company</source>
    <target xml:lang="fr-fr">Company</target>
    <note></note>
    </trans-unit>
    </body>
    </file>
    </xliff>
    

1 个答案:

答案 0 :(得分:3)

这里有一个答案: http://tech.groups.yahoo.com/group/okapitools/message/2494


编辑:链接消息的内容

  保罗,

     
    

我试图弄清楚如何使用差异杠杆     改善翻译体验并获得一个     合并/利用现有时更新xliff文件     用新版本的文件翻译     添加/修改/删除字符串。

  
     

正如Jim所说,使用XLIFF文件,您可以利用它   基于身份的步骤。

     

但Diff杠杆步骤也会起作用。以下是如何做到这一点:

     

我假设您有XLIFF文件,只想更新它们。   您可以创建管道来执行其他操作,例如创建   翻译工具包等,但这会使事情变得简单。

     

首先,您需要将新的源文件放在输入列表1和   输入列表2中的已翻译文件。

     

然后您可以创建以下管道:

     
      
  • 过滤活动的原始文档
  •   
  • 差异化利用
  •   
  • 将事件过滤为原始文档
  •   
     

在Diff Leverage步骤的参数中:确保选项   “设置复制到目标之上”。

     

然后执行管道。

     

我在原始新版本之间附加了一个比较(compare_out.html)   文件和输出文件。正如您可以看到所有可能的文本   杠杆现在在输出中。您的条目“AdminTitleResource”不是   翻译,因为它是翻译文件中的来源是   不同,你的两个新条目也没有翻译。

     

您还会注意到新的属性已被批准='是'   表明翻译已完成。额外的标志可以用来   区分需要翻译的条目   被利用了。

     

由于某种原因,两个杠杆条目没有它:我会有   看一下并报告回来。这可能是一个错误或某些条件我   不记得(可能是吉姆)。

     

基于身份的复制步骤几乎可以更好。它会复制   通过匹配条目的resname来翻译文本。我说   几乎是因为目前它没有查看源文本,所以你   即使新来源不同,也要获得翻译(不是   '利用'步骤)。但是我们可以添加一个额外的选项   检查,这将使步骤像杠杆步骤一样工作。生病   试着找时间做这件事。

     

希望这有帮助,   -yves