带有格式化数字的PHP复数gettext

带有格式化数字的PHP复数gettext,php,multilingual,gettext,Php,Multilingual,Gettext,我希望能够格式化(多语言)句子,如: 我有12345个小部件。 在我的口袋里,我有 msgid "I only have %d widget." msgid_plural "I have %d widgets." msgstr[0] "I don't have any widgets." msgstr[1] "I only have %d widget." msgstr[2] "I have %d widgets." ngettext(“我只有%d个小部件。”,“我有%d个小部件。”,1234

我希望能够格式化(多语言)句子,如:

我有12345个小部件。

在我的口袋里,我有

msgid "I only have %d widget."
msgid_plural "I have %d widgets."
msgstr[0] "I don't have any widgets."
msgstr[1] "I only have %d widget."
msgstr[2] "I have %d widgets."
ngettext(“我只有%d个小部件。”,“我有%d个小部件。”,12345)

如果我使用
number\u格式(12345)
我会返回一个
字符串“12345”
,它不能用于检测复数()


有没有办法让
gettext
提供一个格式化的数字?

您可以将
sprintf
number\u格式结合使用,比如:

sprintf(ngettext("I only have %s widget.", "I have %s widgets.", 1), number_format(1, 0, '.', ','));
sprintf(ngettext("I only have %s widget.", "I have %s widgets.", 999), number_format(999, 0, '.', ','));
sprintf(ngettext("I only have %s widget.", "I have %s widgets.", 1000), number_format(1000, 0, '.', ','));
这将返回:

I only have 1 widget.
I have 999 widgets.
I have 1,000 widgets.