gettext中"msgstr"的多个"msgid"

Yan*_*ing 3 gettext

是否可以使两个或更多的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."
Run Code Online (Sandbox Code Playgroud)

它只是错误的"丢失'msgstr'":

然而,

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

msgid "list.null"
msgstr "There is no any objects yet."
Run Code Online (Sandbox Code Playgroud)

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

有没有人有更好的黑客?

sor*_*rin 7

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

  • msgid 每个条目都需要
  • msgctxt是可选的,用于区分msgid具有相同内容且可能具有不同翻译的两个记录.
  • (msgid, msgctxt)是字典的唯一键,如果msgctxt缺少,你可以考虑它null.

您应该在实现之前阅读gettext文档,因为它并不总是直截了当.

在您的情况下,这是您应该如何实现它:

msgctxt "list.empty"
msgid "There is no any objects yet."

msgctxt "list.null"
msgid "There is no any objects yet."
Run Code Online (Sandbox Code Playgroud)

  • 它拼写为 msgctxt 而不是 msgctx。 (2认同)