在对大型msgid值进行小幅编辑时,寻找有关如何有效使用gettext PO文件的提示和/或工具。
示例:我们有许多存储在PO消息目录文件中的多句/多段消息。如果我们对一条消息做了一个非常小的改动,也许编辑一个句子甚至纠正标点符号,我们在运行msgmerge实用程序时会丢失原始翻译。
我们的译员不是从头开始重新翻译长消息(已通过编辑审批流程),而是返回其PO文件的备份副本,并手动搜索最后一个msgid / msgstr翻译对的文本。然后对当前的msgid值进行diff以查看更改的内容,然后复制并粘贴最后一个转换,然后编辑它们以反映更新的msgid值。
这是很多工作!当然必须有更好的方法来处理这种类型的工作流程吗?
是否有最佳实践方法来存档和查找不再存在于PO文件中的先前翻译?想到的一个想法是在我们的消息文本或消息之前的注释中存储唯一的msg id,并使用此id来检索以前的msgid / msgstr转换对以供查看。或者是否有PO编辑或在线服务使这一过程更有效率?
谢谢你, 马尔科姆
答案 0 :(得分:9)
我一直在寻找一种方法来对msgids进行微小的更改而不会干扰现有的翻译 - 例如,源文本中的拼写错误修复。这是我刚刚制定的一个不涉及网站的方法:
使用GNU gettext中的msgen
生成英语到英语的po文件:
msgen project.pot >corrections.po
手动编辑“corrections.po”中的msgstr
以反映源文本中的拼写错误修复,因此我们有从未修正字符到纠正字符串的映射。 (我没想过如何自动化这一点。)
对于每个“真实”翻译(例如ca.po
):滥用翻译工具包中的poswap
(Ubuntu中为translate-toolkit
)来更改msgids:
poswap -i corrections.po -t ca.po -o ca.new.po
这似乎从GNU gettext po文件中丢失了标题注释和过时的字符串,但手动修复它们比在每次翻译中手动调整msgids(并且可能很容易编写脚本)要少得多。
(显然,这只应在特殊情况下使用,在这种情况下,您绝对确定没有翻译人员需要有机会重新审核其翻译。)
答案 1 :(得分:5)