覆盖 xgettext 的输出文件名
Overwrite output filename of xgettext
我正在使用 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 中可以设置的每个选项,但一无所获。
#: path/to/file.txt:14
文本称为 "location",您对此的最大控制是 --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 打开一个请求。
我正在使用 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 中可以设置的每个选项,但一无所获。
#: path/to/file.txt:14
文本称为 "location",您对此的最大控制是 --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 打开一个请求。