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

标签 gettext poedit

我想在我的源文件中放置关键字和注释。

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

我找不到任何样本来帮助我解决这个问题。

这是我的 X-Pedit-KeywordsList header ,

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

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

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

我希望输出是:

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

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

最佳答案

关键字规范(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 使用的自定义 header 。它也对你没有帮助。

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

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

现在像这样调用 xgettext:

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

你会得到这个 PO 条目:

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

--add-comments=TRANSLATORS: 选项的效果是,如果该注释恰好以字符串“TRANSLATORS:”开头,则它会添加紧接在关键字之前的注释。您可以用您选择的字符串交换“TRANSLATORS:”。您还可以省略 --add-comments 的参数并提取紧接在关键字之前的所有注释。

不是你最初想要的,但尽可能接近。

关于gettext - 在 Poedit 的 PO 文件中,如何提供关键字列表,以便为每个关键字自动提取评论?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51493046/

相关文章:

php - 动态 gettext 的 poedit 解决方法

python - 使用 poswap (translate-toolkit) brakes 输出编码

odoo - 当英语中使用相同的单词但在其他语言中使用不同的单词时,如何保持翻译分离?

android - 将字符串值从自定义对话框传递到另一个 Activity

php - PoEdit 和 PHP 注释

php - 如何让 poedit 工作?

php - 如何让gettext和poedit识别自定义文件类型?

c# - 我可以限制 C# 函数仅接受字符串文字吗?

Windows 上的 PHP gettext

python - 如何在可翻译字符串中包含不间断空格