String

xgettext 錯誤地對字元串進行排序

  • July 31, 2021

我正在嘗試從 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,應該按字母順序排序)是如何工作的嗎?我是否錯過了在一行內按位置排序的標誌?

輸出文件中的註釋提供了線索。顯然-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 ""

引用自:https://unix.stackexchange.com/questions/662718