使用Python中的polib修改/更新po文件中的条目

时间:2013-01-18 18:37:16

标签: python translation gettext poedit

poedit似乎是在Python中使用gettext / po文件的首选库。 docs显示如何迭代消息字符串,保存po和mo文件等。但是,我不清楚如何编辑特定条目?

让我们说,我遍历现有po文件中的所有消息,并将其显示在带有textareas的HTML表单中。通过提交表格,我得到 - 作为一个例子 - 原件 msgid =“Hello World” 和tex textarea翻译 msgstr =“Hallo Welt”

po文件中的原始部分可能如下所示:

#: .\accounts\forms.py:26 .\accounts\registration\forms.py:48
msgid "Hello World"
msgstr ""

或设置模糊标志:

#: .\accounts\forms.py:26 .\accounts\registration\forms.py:48
#, fuzzy
msgid "Hello World"
msgstr "Hallo"

现在如何在实际的po文件中更新此特定翻译?如果此消息被标记为“模糊”,我该如何删除此标志?

任何帮助表示赞赏...

1 个答案:

答案 0 :(得分:3)

好的,在阅读了polib的源代码之后,我发现了这种方式来实现,我想要的是:

entry = po.find('Email address')
if entry:
    entry.msgstr = 'E-Mail-Adresse'
    if 'fuzzy' in entry.flags:
        entry.flags.remove('fuzzy')

这似乎是要走的路......

在多元化的情况下 - 仅作为一个例子:

entry = po.find('%s hour ago')
if entry and entry.msgid_plural:
    entry.msgstr_plural['0'] = 'Vor %s Stunde'
    entry.msgstr_plural['1'] = 'Vor %s Stunden'

polib的文档应该明确地更新。否则很棒的工具。