使用--extract-all
與xgettext
不適用於複數形式。使用I18n C++ hello world with plurals作爲C++代碼的答案是使用xgettext
的兩個測試。使用xgettextt處理複數 - with -extract-all
cat >helloplurals.cxx <<EOF
// hellopurals.cxx
#include <libintl.h>
#include <locale.h>
#include <iostream>
int main(){
setlocale(LC_ALL, "");
bindtextdomain("helloplurals", ".");
textdomain("helloplurals");
for (int ii=0; ii<5; ii++)
printf(ngettext("Hello world with %d moon.\n", "Hello world with %d moons.\n", ii), ii);
EOF
xgettext --package-name helloplurals --package-version 1.1 --default-domain helloplurals --output helloplurals.pot helloplurals.cxx
xgettext --extract-all --package-name helloplurals --package-version 1.1 --default-domain helloplurals --output helloplurals-ea.pot helloplurals.cxx
如預期包括複數形式的處理的一個沒有--extract-all
作品:
#: helloplurals.cxx:10
#, c-format
msgid "Hello world with %d moon.\n"
msgid_plural "Hello world with %d moons.\n"
msgstr[0] ""
msgstr[1] ""
當--extract-all
被添加到命令行所得POT文件沒有。取而代之的是單獨的條目:被直接傳遞到gettext()
類似功能的正確處理多個消息,如圖在第一實施例使用xgettext
#: helloplurals.cxx:10
#, c-format
msgid "Hello world with %d moon.\n"
msgstr ""
#: helloplurals.cxx:10
#, c-format
msgid "Hello world with %d moons.\n"
msgstr ""
字符串文字。
對於未直接傳遞到gettext()
類似功能 使用選項--extract-all
與xgettext
中的一個字符串文字可以被用來產生在一個鍋文件中的條目。
怎樣才能獲得不直接傳遞給gettext()
像在還含有被直接傳遞給gettext()
之類的函數產生的多個條目的多個字符串字面量輸出功能字符串文字的處理:msgid_plural
和msgstr[]
?