在Poedit的PO文件中,如何提供关键字列表,以便为每个关键字自动提取注释?

时间:2018-07-24 07:38:09

标签: gettext poedit

我想在源文件中添加关键字和注释。

gettext的关键字文档说:如果keywordspec的格式为'id:argnum ...,“ xcomment”',xgettext,则从指定的参数字符串中提取消息时,将提取的注释xcomment添加到消息中。

我找不到任何样本可以帮助我。

这是我的X-Pedit-KeywordsList标头

"X-Poedit-KeywordsList: __;_ex;\n"

这是我的php源代码中的示例行:

_ex("unlock_level", "Available at level #.")

我希望输出为:

# "Available at level #."
msgid "unlock_level"

我应该如何编辑我的关键字列表标题(和/或来源)?

2 个答案:

答案 0 :(得分:1)

关键字spec(bourne shell语法!)的示例是:

xgettext --keyword='_ex:1,"my comment"' so.php

不幸的是,这不是您想要的。它将生成以下po条目:

#. my comment
#: so.php:3
msgid "unlock_level"
msgstr ""

上面的命令行翻译为“提取所有对_ex()的所有调用作为msgid的第一个参数,并且总是将注释'my comment'添加到PO条目”。您只能指定哪些参数是单数,复数或消息上下文。

X-POEdit-KeywordsList似乎是POEdit使用的自定义标头。它也无济于事。

您可以通过将源更改为此来实现所需的结果:

<?
# TRANSLATORS: Available at level #.
_ex("unlock_level");
?>

现在像这样调用xgettext

xgettext --add-comments=TRANSLATORS: --keyword=_ex so.php

您将获得以下采购订单条目:

#. TRANSLATORS: Available at level #.
#: so.php:3
msgid "unlock_level"
msgstr ""

选项--add-comments=TRANSLATORS:的效果是,它会在关键字完全以字符串“ TRANSLATORS:”开头的情况下添加紧接在关键字之前的注释。您可以将“ TRANSLATORS:”替换为您选择的字符串。您还可以省略--add-comments的参数,并提取紧接关键字之前的所有注释。

并不是您最初想要的,而是尽可能地接近。

答案 1 :(得分:0)

Poedit支持翻译评论。我最终像这样向我的源文件中添加了本地化密钥:

// TRANSLATORS: "Available at level #."
__("unlock_level")

这是我通过按Poedit中的更新按钮进入po文件的结果:

#. TRANSLATORS: "Available at level #."
msgid "unlock_level"