format_plural

Неверно выводит склонение [решено]

Аватар пользователя c3266391

Сделал склонение для валюты рубли:

msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"POT-Creation-Date: 2010-11-17 13:10+0700\n"
"PO-Revision-Date: 2010-11-17 13:10+0700\n"
"Last-Translator: NAME \n"
"Language-Team: LANGUAGE \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=((((n%10)==1)&&((n%100)!=11))?(0):(((((n%10)>=2)&&((n%10)<=4))&&(((n%100)<10)||((n%100)>=20)))?(1):2));\n"

#: /
msgid "@count roubles"
msgid_plural "@count roubles"
msgstr[0] "@count рубль"
msgstr[1] "@count рубля"
msgstr[2] "@count рублей"

В коде вызываю
format_plural($price, '1 rouble', '@count roubles')

Если число в $price оканчивается на 1, к примеру 101, то выводится 1 рубль, хотя должно 101 рубль.

Где ошибка?

0 Thanks

Поддержка русских словоформ в format_plural

Аватар пользователя vectoroc

Искал, уже решил накатать патч в ядро (и накатал...), но тов. Ilya_1st подсказал, что этот вопрос решается через трансляции в .po файле.

В начале .po файла должны быть строки

"Plural-Forms: nplurals=3; plural=((((n%10)==1)&&((n%100)!=11))?"
"(0):(((((n%10)>=2)&&((n%10)<=4))&&(((n%100)<10)||((n%100)>=20)))?(1):2));"

Далее

msgid "Bulk generation of index aliases completed, one alias generated."
msgid_plural ""
"Bulk generation of index aliases completed, @count aliases generated."
msgstr[0] ""
"Массовое обновление индекса синонимов завершено, @count синоним сгенерирован."
msgstr[1] ""
"Массовое обновление индекса синонимов завершено, @count синонима "
"сгенерировано."
msgstr[2] ""
"Массовое обновление индекса синонимов завершено, @count[2] синонимов "
"сгенерировано."

Пример из pathauto/translations/ru.po

0 Thanks