【问题标题】:How to efficiently work with gettext PO files when making small edits to large text values在对大文本值进行小幅编辑时如何有效地使用 gettext PO 文件
【发布时间】:2011-02-27 07:19:00
【问题描述】:

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

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

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

这是很多工作!当然必须有更好的方法来处理这种类型的工作流?

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

谢谢你, 马尔科姆

【问题讨论】:

    标签: internationalization diff gettext


    【解决方案1】:

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

    1. 使用来自 GNU gettext 的msgen 生成英语到英语的 po 文件:

      msgen project.pot >corrections.po

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

    3. 对于每个“真实”翻译(例如 ca.po):从翻译工具包(Ubuntu 中为 translate-toolkit)滥用 poswap 来更改 msgid:

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

    这似乎确实会丢失 GNU gettext po 文件中的标头 cmets 和过时的字符串,但手动修复它们比手动调整每次翻译中的 msgid 工作量要少得多(并且可能很容易被脚本化)。

    (显然,这应该只在特殊情况下使用,在这种情况下,您绝对确定没有任何译员需要重新审核他们的翻译的机会。)

    【讨论】:

    • 非常聪明。谢谢JTN。问候,马尔科姆
    【解决方案2】:

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

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

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

    【讨论】:

    • 谢谢沃尔特。问候,马尔科姆
    猜你喜欢
    • 2012-03-29
    • 1970-01-01
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-22
    • 1970-01-01
    • 2012-10-13
    相关资源
    最近更新 更多