我正在考虑使用XLIFF来标准化企业内的本地化工作。我对 xliff 很陌生,并且做了一些研究,我想出了以下使用它的一般过程:
- 从开发项目资源中提取字符串(.resx 用于 .Net,.properties 用于 Java)——我发现这样做的好方法是使用 Okapi Localization Toolbox 中的 Rainbow——并使用“Utilities => Translation Kit Creation”命令
- 然后翻译提取的文件,如 http://www.opentag.com/okapi/wiki/index.php?title=How_to_Translate_XLIFF_Documents 中所述,例如使用虚拟应用程序
- 最后将翻译后的 xliff 转换回原始格式(resx/properties) - 这也可以与 Rainbow 一起使用“Utilities => Translation Kit Post-Processing”
到目前为止一切都很清楚,但是我想知道添加或修改字符串资源时的最佳做法是什么?我不希望每次以原始格式(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>