我正在使用xgettext
标准输入,因为输入在文件中不可用。但是,我希望它输出一个我在每个字符串上面指定为注释的文件名。
#: Standardinput:13
msgid "User"
msgstr ""
#: Standardinput:13
msgid "Invite"
msgstr ""
#: Standardinput:14
msgid "Group"
msgstr ""
如果我可以将文件名设置为path/to/file.txt
,则应输出以下内容:
#: path/to/file.txt:13
msgid "User"
msgstr ""
#: path/to/file.txt:13
msgid "Invite"
msgstr ""
#: path/to/file.txt:14
msgid "Group"
msgstr ""
我阅读了我可以在docs中设置的每个选项,但没有发现它。
答案 0 :(得分:1)
#: path/to/file.txt:14
文字称为“位置”,您对此的控制最多的是--no-location
和--add-location
标记。有关源代码原因,请参阅xgettext.c:xgettext_open()。
同时,显而易见的事情是从标准输入,输出到标准输出,手动替换,然后存储在目标PO文件中。例如:
xgettext -k_ -Lc -o- - < hello.c \
| sed 's@#: standard input:@#: path/to/file.c:@g' \
> messages.po
显然更改sed
调用中的模式,以匹配您的xgettext格式和您想要表示的文件。
不太明显的是将标准符号链接到看起来像目标的文件名。例如:
$ ln -s /dev/stdin file.c
$ echo 'int main() { printf(gettext("Hello World\n")); return 0; }' \
| xgettext --omit-header -o- file.c
#: file.c:1
#, c-format
msgid "Hello World\n"
msgstr ""
当输入是标准输入时,能够为输出目的命名,这似乎是一个合理的功能。我建议在GNU打开一个请求。