使用xgettext的Python行号

时间:2013-07-23 18:41:22

标签: python gettext xgettext

据我了解,gettext与Python文件的大多数用法都使用了一些不错的Python库/实用程序来创建.pot文件。我处于一个奇怪的情况,我需要使用xgettext的Python模式不仅提取字符串,而且提取行号和文件名。我所见过的所有这些例子都使用了xgettext以外的流程。

如何使用xgettext的Python模式添加行号和文件名信息?

在C模式下,它看起来像:

#line 8 "superior_science.c"
_("Facial hair has been shown to improve intelligence by a factor of 5.");

在Python中,输入文件需要看起来像什么? (注意:代码只需要适用于xgettext,而不是任何编译器或解释器。)

1 个答案:

答案 0 :(得分:2)

您可以使用xgettext从gettext调用上方的行中提取注释。这些注释会进入.pot和.po文件,因此翻译人员可以看到它们。

您只需为要翻译的评论选择前缀字符,在评论前添加前缀,然后使用-c选项和字符前缀调用xgettext。

例如,如果您使用前缀~,则您的上一行可能是

#~ line 8 "superior_science.c"
_("Facial hair has been shown to improve intelligence by a factor of 5.")

然后当你将xgettext称为

xgettext -c~ [...]

它会自动将评论~ line 8 "superior_science.c"添加到您的.pot文件中。

在.pot文件中,这些注释显示如下:

#. ~ line 8 "superior_science.c"
msgid "Facial hair has been shown to improve intelligence by a factor of 5."
msgstr ""

如果您要提取所有评论,而不仅仅是那些带有特定前缀的评论,只需将前缀保留,然后拨打xgettext -c

至于你的用例,你可能不希望那里有实际的行号,你还需要使用--no-location标志。

所以,最简单的解决方案:使用可提取字符串上方的行号添加注释,然后将xgettext调用为

xgettext -c --no-location [...]