многоязычный — PHP множественное число с форматированными числами

Я хочу иметь возможность форматировать (многоязычное) предложение как:

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 подать отформатированный номер?

0

Решение

Ты можешь использовать 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.
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]