我正在考虑使用 XLIFF 来标准化企业内的本地化工作。 我是xliff的新手并且已经做了一些研究我想到了以下使用它的一般过程:
到目前为止一切都很清楚,但是我想知道在添加或修改字符串资源时最佳做法是什么?每当有一个新字符串以原始格式(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>
答案 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