Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Internationalization 如何在对大文本值进行小编辑时有效地使用gettext PO文件_Internationalization_Diff_Gettext - Fatal编程技术网

Internationalization 如何在对大文本值进行小编辑时有效地使用gettext PO文件

Internationalization 如何在对大文本值进行小编辑时有效地使用gettext PO文件,internationalization,diff,gettext,Internationalization,Diff,Gettext,正在查找有关如何在对大msgid值进行小编辑时有效使用gettext PO文件的提示和/或工具 示例:我们的PO邮件目录文件中存储了大量多句/多段邮件。如果我们对一条消息做了很小的更改,可能是编辑了一个句子,甚至更正了标点符号,那么当我们运行msgmerge实用程序时,我们就会丢失原始的翻译 我们的翻译人员不再从头开始重新翻译长消息(已通过编辑批准流程),而是返回其PO文件的备份副本,手动搜索最后一对msgid/msgstr翻译的文本,然后将其与当前msgid值进行比较,以查看有何变化,然后复制

正在查找有关如何在对大msgid值进行小编辑时有效使用gettext PO文件的提示和/或工具

示例:我们的PO邮件目录文件中存储了大量多句/多段邮件。如果我们对一条消息做了很小的更改,可能是编辑了一个句子,甚至更正了标点符号,那么当我们运行msgmerge实用程序时,我们就会丢失原始的翻译

我们的翻译人员不再从头开始重新翻译长消息(已通过编辑批准流程),而是返回其PO文件的备份副本,手动搜索最后一对msgid/msgstr翻译的文本,然后将其与当前msgid值进行比较,以查看有何变化,然后复制并粘贴最后一次翻译,然后进行编辑以反映更新后的msgid值

这是一个很大的工作!当然,一定有更好的方法来处理这种类型的工作流吗

是否有一种最佳实践方法来归档和查找PO文件中不再存在的以前的翻译?想到的一个想法是在我们的消息文本或消息前面的注释中存储一个唯一的msg id,并使用此id检索以前的msgid/msgstr翻译对以供审阅。或者,是否有PO编辑或在线服务使该流程更加高效

谢谢,, 马尔科姆的翻译记忆支持可能对此有所帮助。如果您的原始单位在翻译记忆中,它将在一定的变化范围内显示(有差异)(基于Levenshtein距离)。它仍将包含原始(未修改的)翻译,但至少原始文本更容易访问,并突出显示差异

我不是100%确定,但也可能提供基于web的解决方案。如果您需要任何帮助,请在FreeNode上询问pootle


当然,更普遍的改进是尽可能地分离/分割单元。

我一直在寻找一种方法,在不干扰现有翻译的情况下对msgid进行细微更改-例如,源文本中的拼写错误修复。以下是我刚刚制定的一个不涉及网站的食谱:

  • 使用GNU gettext中的
    msgen
    生成英文到英文的po文件:

    msgen project.pot>corrections.po

  • 手动编辑“corrections.po”中的
    msgstr
    s,以反映源文本中的错误修复,因此我们有一个从未更正到更正字符串的映射。(我还没有想过如何实现这一点的自动化。)

  • 对于每个“真实”翻译(例如
    ca.po
    ):滥用翻译工具包(Ubuntu中的
    Translate Toolkit
    )更改MSGID:

    poswap-i corrections.po-t ca.po-o ca.new.po

  • 这似乎会丢失GNU gettext po文件中的标题注释和过时字符串,但手动修复这些注释和字符串比在每次翻译中手动调整MSGID要少得多(而且可能很容易编写脚本)


    (显然,只有在特殊情况下才可以使用此选项,您完全可以确定没有翻译人员需要重新审阅其翻译的机会。)

    谢谢您,Walter。你好,马尔科姆非常聪明。谢谢你,JTN。你好,马尔科姆