Пытаюсь локализовать модуль.
Столкнулся вот с какой проблемой. Нужно с помощью format_plural вывести единицу измерения во множественном числе, но без значения величины.
Создал в 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));\n"
...
#: drupalit.module:123
msgid "@count votes"
msgstr[0] "голос"
msgstr[1] "голосов"
msgstr[2] "голоса"
...
Имею в коде:
format_plural($data['votes'], 'vote', '@count votes')
Есть два вопроса:
1. Как мне сделать, чтобы вместо "1 голос", "2 голоса", "5 голосов" выводилось просто "голос", "голоса", "голосов"? format_plural это умеет или может есть какая-то альтернативная функция из API?
2. Почему 5, 6 и им подобное выводятся вообще без "голосов", а просто как число? Где ошибка (вроде бы не в plural=...)?
У меня Drupal 5.3.
А как с помощью potx извлечь-то? (тему хочу перевести)
Я долго сомневался. Стоит ли включать на сервер ещё и темы которых порядка 450. В большинстве из них практически нет ни чего для перевода...
Для извлечения в potx - /admin/build/translate/extract
Ошибочка немного см. (2) ниже.
Да и порядок должен быть: 1,2,5
1) Что мешает вырезать из итоговой строки примерно так(по память, главное - суть):
<?php
return str_replace(string($data)['votes']." ","", format_plural($data['votes'], 'vote', '@count votes'))
?>
2)
<?php
format_plural($count, '1 vote', '@count votes');
?>
msgid "1 vote"
msgid_plural "@count vote"
msgstr[0] "@count голос"
msgstr[1] "@count голоса"
msgstr[2] "@count[2] голосов"
А лучше строки извлекать модулем potx например.