据我了解,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
,而不是任何编译器或解释器。)
答案 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 [...]