是否可以使两个或多个 msgids 匹配一个 msgstr?

例如, ('list.empty') ('list.null') 都返回 "There is no any objects yet."
如果我在 po 文件中这样写:

msgid "list.empty"
msgid "list.null"
msgstr "There is no any objects yet."

它只是“缺少‘msgstr’”错误:

然而,
msgid "list.empty"
msgstr "There is no any objects yet."

msgid "list.null"
msgstr "There is no any objects yet."

看起来和工作正常但很愚蠢,因为一旦我更改了一个 msgstr 而没有另一个,它们会返回不同的结果。

有没有人有更好的黑客?

最佳答案

您以错误的方式接近 gettext,这是它的工作原理:

每个条目都需要

  • msgid
  • msgctxt 是可选的,用于区分具有相同内容但可能有不同翻译的两个 msgid 记录。
  • (msgid, msgctxt) 是字典的唯一键,如果缺少 msgctxt 可以考虑使用 null

  • 您应该在实现之前阅读 gettext documentation,因为它并不总是那么简单。

    在您的情况下,这就是您应该如何实现它:
    msgctxt "list.empty"
    msgid "There is no any objects yet."
    
    msgctxt "list.null"
    msgid "There is no any objects yet."
    

    关于gettext - gettext 中 "msgid"的多个 "msgstr",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5895205/

    10-12 13:55