Склонение слов при числительных в Winter CMS

Небольшая инструкция как в Winter CMS можно сделать склонение окончаний в словах при числах, чтобы у них были правильные окончания. Использование плюрализации.

Склонение слов при числительных в Winter CMS

Слова при числительных - это слова которые идут после числовых обозначений. Как пример можно взять количество комментариев и склонение самого слова комментарий.

В русском языке если слова склоняются, то получается у этих слов при числительных три варианта склонения (в английском два).

Возьмём слово комментарий и просклоняем его до 10. Получается три разных окончания:

  • 1 комментарий
  • 2, 3, 4 комментария
  • 5, 6, 7, 8, 9, 10 комментариев

Как же в Winter CMS вывести правильный вариант склонения если изначально мы не знаем каким будет числовое значение при этом слове?

Всё просто и разработчики Laravel уже позаботились об этом. Laravel trans_choice() предоставляет средства для правильного формирования множественного числа строк в разных регионах с очень гибкими правилами.


Сначала создайте строки перевода в файле локализации вашего плагина. Как пример я сделаю так:

plugins/author/pluginName/lang/ru/lang.php
return [
    'comments' => 'комментарий|комментария|комментариев',
    'offers' => 'предложение|предложения|предложений',
    'views' => 'просмотр|просмотра|просмотров',
];

Здесь мы задали ключи языковым переменным и значениями прописали через вертикальную черту | варианты склонения нужного нам слова.

Теперь мы можем в нужном нам месте выводить значение.

 

Вывод в Twig

В твиге есть фильтр transchoice, у него вот такой синтаксис для вывода нужного варианта:

{{ "author.pluginName::lang.comments" | transchoice(10) }}

Цифра 10 передаваемая параметром в transchoice() это числовое значение для которого нужно вывести вариант слова с нужным склонением окончания. Как правило это переменная, просто для понятности синтаксиса я указал числом.

Более реальный пример, мы хотим вывести строку У статьи 45203 просмотра. У нас есть переменная item с коллекцией данных среди которых есть поле count_views которое на данный момент имеет значение 45203.

plugins/author/pluginName/components/item/default.htm
<div>У статьи {{ item.count_views }} {{ "author.pluginName::lang.views" | transchoice(item.count_views) }}</div>

При изменении количества просмотров будет выводится вариант с правильным склонением окончания.

 

Вывод в PHP

В php используется функция trans_choice() принимающая два параметра - языковой ключ и число. Вот несколько примеров:

$one = trans_choice('author.plugin::lang.comments', 1); // комментарий
$two = trans_choice('author.plugin::lang.offers', 2);   // предложения
$ten = trans_choice('author.plugin::views.choice', 10); // просмотров

Для примера вторым параметром указаны чмсла, в реальности же указывается переменная с int типом данных (целое число).

 

Так же есть решение склонение окончаний числительных с помощью JavaScript

 

Записи по теме
Вложенные изображения и их вывод
Вложенные изображения и их вывод Как в Winter CMS к моделям прикрепляются изображения через связи и как затем вывести эти изображения в нужном нам месте с заданными размерами.
Замена иконок в меню админки
Замена иконок в меню админки Инструкция как в главном меню админ-панели сайта заменить стандартные svg-иконки и иконки у пунктов меню сторонних плагинов установленных на сайте.
Как включить обновления в WinterCMS
обновление Где в Winter CMS находится настройка позволяющая разрешить обновления ядра сайта и установленных на нём плагинов и как правильно её включить.
Как удалить index.php из урлов в Winter CMS
index.php в october cms В Winter CMS изначально страницы могут быть также доступны с префиксом index.php в урлах. Чтобы это убрать, нужно добавить небольшое правило в файл .htaccess Данный код решит эту проблему...
Ошибка 500 после установки Winter CMS
Ошибка 500 после установки Winter CMS Один из способов как можно избавиться от ошибки 500, появляющейся сразу после установки WinterCMS. Возможно вам тоже поможет данное решение.
Комментарии 0

*** чтобы писать комментарии.