![xgettext 错误地对字符串进行排序](https://linux22.com/image/193759/xgettext%20%E9%94%99%E8%AF%AF%E5%9C%B0%E5%AF%B9%E5%AD%97%E7%AC%A6%E4%B8%B2%E8%BF%9B%E8%A1%8C%E6%8E%92%E5%BA%8F.png)
我正在尝试从 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 ""