簡體   English   中英

xgettext 錯誤地推斷出 cpp 文件中的“c 格式”

[英]xgettext incorrectly infers 'c-format' in cpp files

我有一堆 .cpp 文件,其中包含包含文字百分號的文本。 這些文件根本不使用printf ,它們使用iostream的東西:

std::cout <<  _( "50 % of 10 is 5" ) << std::endl;

但是,包含%的字符串仍被xgettext標記為c-format

#: test.cpp:5
#, c-format
msgid "50 % of 10 is 5"
msgstr ""

然后這個模板被msgmerge處理並翻譯,翻譯工具(例如 Poedit)抱怨這樣的條目:

#: test.cpp:5
#, c-format
msgid "50 % of 10 is 5"
msgstr "50 % de 10 est 5"

“msgid”和“msgstr”中的格式規范不匹配

手動刪除#, c-format注釋會有所幫助,但它們會在每次合並后返回。 如何強制xgettextmsgmerge刪除這些評論? 我知道我可以用sed過濾掉它們,但是有沒有更聰明的方法可以保留來自 C 文件的字符串的此類注釋?

gettext文檔在這里討論了這個完全相同的問題: https://www.gnu.org/software/gettext/manual/html_node/c_002dformat-Flag.html

根據文檔,您應該在以下行之前使用此特殊注釋:

xgettext:no-c-format

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM