gpt4 book ai didi

java - XLIFF、版本控制或翻译更新过程(Diff Leverage 步骤)

转载 作者:搜寻专家 更新时间:2023-11-01 03:11:47 30 4
gpt4 key购买 nike

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

  1. 从开发项目资源中提取字符串(.Net 的 .resx,.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”

到目前为止一切都很清楚,但是我想知道什么是添加或修改字符串资源时的最佳做法?我不希望每次以原始格式(resx/properties)将新字符串添加到字符串资源时都重新翻译所有资源

如果有对翻译的版本控制,那也很棒 - 这样如果标记有相同版本的多种语言翻译将被合并(提供相同的字符串集)。并且在添加新字符串或修改现有字符串时更新版本。

有现成的解决方案吗?还是我们必须自己构建?

编辑:

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

  • 更新了 1 个字符串(AdminTitleResource 现在是 Administration Resource)

  • 删除了 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>

最佳答案

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


编辑:链接消息的内容

Hi Paul,

I am trying to figure out how to use the diff leverage to improve the translation experience and get an update xliff file when merging/leveraging existing translation with new version of the document with added/modified/removed strings.

正如 Jim 指出的那样,您可以利用 XLIFF 文件 基于 ID 的步骤。

但是 Diff 杠杆步骤也可以。方法如下:

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

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

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

  • 用于过滤事件的原始文档
  • 差异化利用
  • 过滤原始文档的事件

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

然后执行管道。

我附上了原始新之间的比较(compare_out.html) 文件和输出文件。如您所见,所有可能的文字 杠杆现在在输出中。您输入的“AdminTitleResource”不是 已翻译,因为它是翻译文件中的来源 不同,并且您的两个新条目也未翻译。

您还会注意到那里的新属性 approved='yes' 表示翻译完成。该额外标志可用于 将需要翻译的条目与需要翻译的条目区分开来 被杠杆化了。

出于某种原因,有两个杠杆条目没有它:我会有 看看那个并报告回来。这可能是一个错误或某些情况我 不记得了(也许 Jim 记得)。

基于 Id 的复制步骤几乎可以做得更好。它会复制 通过匹配条目的重命名来翻译文本。我说 几乎是因为目前它不看源文本,所以你 即使新来源不同(这不是 '利用'步骤)。但我们可以添加一个选项来增加额外的费用 检查这将使该步骤像杠杆步骤一样工作。恶劣地 试着找时间做这件事。

希望对您有所帮助, -伊夫

关于java - XLIFF、版本控制或翻译更新过程(Diff Leverage 步骤),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8508066/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com