xgettext 错误地对字符串进行排序

xgettext 错误地对字符串进行排序

我正在尝试从 C 源代码生成翻译文件,其中翻译条目的顺序与源代码中出现的顺序完全相同。我愿意不是希望它们按字母顺序排序,或按随机顺序排序,因为某些字符串按必须保留的特定于域的顺序排序。我有以下测试文件:

char * elements[] = {gettext("Hydrogen"), gettext("Helium"), gettext("Lithium")};

我正在使用xgettext -F test.c,根据文档应该按位置排序:

-F,--sort-by-file

    按文件位置对输出进行排序

但是,输出似乎按字母顺序排序:

#: test.c:1
msgid "Helium"
msgstr ""

#: test.c:1
msgid "Hydrogen"
msgstr ""

#: test.c:1
msgid "Lithium"
msgstr ""

有人可以准确解释-F(和-s,应该按字母顺序排序)是如何工作的吗?我是否错过了一个按单行内位置排序的标志?

答案1

输出文件中的注释提供了线索。显然-F正在排序经过电话号码, 然后在每行中按字母顺序排序。只需将输入更改为

char * elements[] = {gettext("Hydrogen"),
                     gettext("Helium"),
                     gettext("Lithium")};

产量

#: test2.c:1
msgid "Hydrogen"
msgstr ""

#: test2.c:2
msgid "Helium"
msgstr ""

#: test2.c:3
msgid "Lithium"
msgstr ""

相关内容