2015-12-08 3 views
0

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

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", которая не может использоваться для обнаружения множественных чисел (the docs say that it must be an int).

Есть ли способ, которым я могу получить gettext до отформатированного номера?

ответ

1

Вы можете использовать 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. 
Смежные вопросы