Использование склонений в числительных
Использование склонений в числительных
В некоторых местах проекта хотелось бы видеть количество и описание сущности с учетом склонения, например:
- 1 монета, 5 монет, нет монет
или
- 2 пользователя, 7 пользователей и так далее.
Что посоветуете сделать для реализации? Вроде как подключать для этого Yii::t() нецелесообразно? Проект на русском языке, мультиязычность не предусмотрена. Или это как раз тот случай, когда этим можно воспользоваться? То есть даже если перевод не нужен.
Либо написать виджет в который передавать число и некоторый флаг [склоняемое слово]?
Как принято делать?
- 1 монета, 5 монет, нет монет
или
- 2 пользователя, 7 пользователей и так далее.
Что посоветуете сделать для реализации? Вроде как подключать для этого Yii::t() нецелесообразно? Проект на русском языке, мультиязычность не предусмотрена. Или это как раз тот случай, когда этим можно воспользоваться? То есть даже если перевод не нужен.
Либо написать виджет в который передавать число и некоторый флаг [склоняемое слово]?
Как принято делать?
Последний раз редактировалось girmate 2016.10.06, 22:24, всего редактировалось 1 раз.
Осторожно! Вы общаетесь с новичком
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Использование склонений в числительных
Yii::t() использовать не обязательно. Можно просто вызвать соответствующий метод форматтера.
Нравится Yii? Давайте сделаем его лучше!.
Re: Использование склонений в числительных
Если Вы имели в виду число прописью, то значит меня неправильно поняли.Sam Dark писал(а):Yii::t() использовать не обязательно. Можно просто вызвать соответствующий метод форматтера.
Мне нужно изменять окончания сущностей в зависимости от количества (числа).
Осторожно! Вы общаетесь с новичком
Re: Использование склонений в числительных
Так ведь Sam Dark говорит, что можно без Yii::t() как-то.Onotole писал(а):https://github.com/yiisoft/yii2/blob/ma ... нное-число
Осторожно! Вы общаетесь с новичком
Re: Использование склонений в числительных
http://php.net/manual/ru/book.intl.phpgirmate писал(а):Так ведь Sam Dark говорит, что можно без Yii::t() как-то.Onotole писал(а):https://github.com/yiisoft/yii2/blob/ma ... нное-число
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Использование склонений в числительных
Код: Выделить всё
echo Yii::$app->i18n->format('На диване {n, plural, =0{нет кошек} =1{лежит одна кошка} one{лежит # кошка} few{лежит # кошки} many{лежит # кошек} other{лежит # кошки}}!', ['n' => 0], 'ru_RU');
Код: Выделить всё
function f($message, $params)
{
return Yii::$app->i18n->format($message, $params, 'ru_RU');
}
Нравится Yii? Давайте сделаем его лучше!.
Re: Использование склонений в числительных
Отлично. Спасибо. Только в примере из документации не хватает связки =11. Если ее нет, то все попадает в other, и получается неправильное склонение.
Осторожно! Вы общаетесь с новичком
Re: Использование склонений в числительных
=11 попадает под many
Re: Использование склонений в числительных
Да что ж со мной не так. Действительно. А ведь читал как от 0 до 5, от 20 до 25. И даже не щелкнуло ничего не в голове, заработался.Onotole писал(а):=11 попадает под many
Осторожно! Вы общаетесь с новичком
Re: Использование склонений в числительных
Из документации: В ICU версии 52.1 было испорчено форматирование множественных чисел (plural) в русском языке. Проблема решается обновлением ICU до версии 53.1 или старше.
А если установлена версия 51.2 (идет по умолчанию с OpenServer) то стоит волноваться?
А если установлена версия 51.2 (идет по умолчанию с OpenServer) то стоит волноваться?
Осторожно! Вы общаетесь с новичком
Re: Использование склонений в числительных
Хотя чуть выше написано:
Так что лишь одна версия испорчена, остальные нормальные (кроме одной).Чтобы иметь доступ ко всем возможностям, описанным в документации, мы рекомендуем использовать ICU версии 49 или новее.
Осторожно! Вы общаетесь с новичком
Re: Использование склонений в числительных
Актуальная версия 57.1. Надо обновлятьсяgirmate писал(а):Из документации: В ICU версии 52.1 было испорчено форматирование множественных чисел (plural) в русском языке. Проблема решается обновлением ICU до версии 53.1 или старше.
А если установлена версия 51.2 (идет по умолчанию с OpenServer) то стоит волноваться?
- Cacatuidae
- Сообщения: 65
- Зарегистрирован: 2017.01.08, 17:39
Re: Использование склонений в числительных
Не могу понять почему так выходит, для всех условий используется только "other"
ICU 58.2
INTL 1.1.0
Yii.language: ru-RU
Результат:
ICU 58.2
INTL 1.1.0
Yii.language: ru-RU
Код: Выделить всё
$i = 0;
do {
print_r(Yii::t('app', 'Здесь {n,plural,=0{котов нет} =1{есть один кот} one{# кот} few{# кота} many{# котов} other{# барсика}}!', ['n' => $i]). PHP_EOL);
} while ($i++ < 21);
Результат:
Код: Выделить всё
Здесь котов нет!
Здесь есть один кот!
Здесь 2 барсика!
Здесь 3 барсика!
Здесь 4 барсика!
Здесь 5 барсика!
Здесь 6 барсика!
Здесь 7 барсика!
Здесь 8 барсика!
Здесь 9 барсика!
Здесь 10 барсика!
Здесь 11 барсика!
Здесь 12 барсика!
Здесь 13 барсика!
Здесь 14 барсика!
Здесь 15 барсика!
Здесь 16 барсика!
Здесь 17 барсика!
Здесь 18 барсика!
Здесь 19 барсика!
Здесь 20 барсика!
Здесь 21 барсика!
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Использование склонений в числительных
Версию ICU получили из PHP?
Нравится Yii? Давайте сделаем его лучше!.
- Cacatuidae
- Сообщения: 65
- Зарегистрирован: 2017.01.08, 17:39
Re: Использование склонений в числительных
Re: Использование склонений в числительных
странно, попробовал у себя и локально и на сервере - та же история
- Cacatuidae
- Сообщения: 65
- Зарегистрирован: 2017.01.08, 17:39
Re: Использование склонений в числительных
На 55.1 так и есть. Надо обновлять до 58.2