Gettext自动生成注释

12

我正在使用gettext为一个PHP项目进行国际化,我想要使用自动注释功能来给翻译人员在翻译被ID替换的长语句时提供提示。我想要得到的是以下的po文件:

#: full-path-to-file/index.phtml:3
#. a very long text which should replaced by _('foobar')
msgid "foobar"
msgstr ""

这样,翻译人员可以使用POEdit或类似工具,在程序员的注释框中看到关键字foobar时,就知道应该翻译什么。

我尝试过这段代码,但它无效。

<?php
/// TRANSLATORS: a very long text which should replaced by _('foobar')
_('foobar');
?>

我是否遗漏了什么,还是自动注释在PHP中不起作用?

即使维基百科提到这个功能,我也尝试复制他们在C文件中的示例,但是即使在C中,我也无法让其工作。我使用的命令行是

xgettext -C -o - main.c

但生成的输出为:

#: main.c:16
#, c-format
msgid "My name is %s.\n"
msgstr ""

所以我肯定漏掉了什么,我应该使用任何xgettext标志或特定版本来启用此功能。


如果您尝试使用--language=Python从JavaScript中提取内容,请在注释开头添加一个哈希#符号,这意味着您可以像这样开始注释://#,这样xgettext将正确提取翻译注释。 - Radu Maris
1个回答

12
为了让 xgettext 从您的源文件中提取注释,您需要传递一个参数来告诉它要查找哪些注释。
根据文档
-c[tag]’ 或 ‘--add-comments[=tag]
用于将以 tag 开头且在关键词行之前的注释块放入输出文件中。如果没有指定 tag,则该选项表示将所有在关键词行之前的注释块都放入输出文件。
传递 "-c/" 或 "--add-comments=/" 作为参数将使其识别“triple slash”格式的注释。

@John Flatness - 你有没有想法为什么在Python模式下无法使用.js文件?更多细节请参考这里:https://dev59.com/6mfWa4cB1Zd3GeqPhoLN - ragulka
2
请注意,如果您使用 -c/ 来提升诸如 ///提示给翻译者 这样的注释,它也会挑选 //x/y 在这里总是> 2。对于此示例,xgettext 将在.pot文件中发出#. y 在这里总是> 2 - Mikko Rantalainen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接