gpt4 book ai didi

Python xgettext 合并gettext 和ngettext 字符串,打破翻译查找

转载 作者:行者123 更新时间:2023-12-04 05:27:06 24 4
gpt4 key购买 nike

运行:

> xgettext test.py -o out.pot

在 Python 片段 test.py 上:
def main(num):
gettext("TEST")
ngettext(num, "TEST", "TESTS")

生成具有以下行的 pot 文件(翻译后的字符串在 po 文件中):
#: test.py:3 test.py:4
msgid "TEST"
msgid_plural "TESTS"
msgstr[0] "TEST-SINGLE"
msgstr[1] "TEST-PLURAL"

将其转换为 po 文件,然后转换为 mo 文件。我无法获得 gettest("TEST") 调用的翻译。
> ngettext("TEST", "TESTS", 1)
> TEST-SINGLE
> gettext("TEST")
> TEST

我正在使用 Python 的标准 gettext 包。我不确定这些合并行为是否符合预期,但它似乎破坏了查找非复数字符串翻译的能力。有没有办法避免这种情况?

我正在考虑为 gettext 编写一个后备,如果第一个调用失败,则尝试使用 ngettext 调用。不过,这似乎很hacky。

最佳答案

问题似乎源于 gettext 包查找翻译的方式。对于 gettext 和 ugettext 调用,它只是在目录中查找 _catalog['TEST'],而不搜索 _catalog[("TEST", 0)]。

我不相信这是正确的行为,因为 xgettext 决定合并两个字符串,但我在文档中找不到任何内容来证明一种或另一种方式。

为了解决这个问题,我在 gettext 和 ugettext 的两种替换方法中进行猴子修补,如果简单查找失败,它将回退到 (message, 0) 目录查找。

关于Python xgettext 合并gettext 和ngettext 字符串,打破翻译查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13081453/

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