Я хочу иметь возможность форматировать (многоязычное) предложение как:
I have 12,345 widgets.
В моем .po у меня есть
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("I only have %d widget.", "I have %d widgets.", 12345);
Если я использую number_format(12345)
Я вернусь "12,345"
, который не может быть использован для обнаружения множественного числа (документы говорят, что это должно быть int
).
Есть ли способ, которым я могу иметь gettext
подать отформатированный номер?
Ты можешь использовать sprintf
в комбинации с number_format
лайк:
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.
Других решений пока нет …