Блог Горошко Андрея 1C-Битрикс Склонение существительных с числительными: Класс Bitrix\Main\Grid\Declension

Склонение существительных с числительными: Класс Bitrix\Main\Grid\Declension

Средний рейтинг
Еще нет оценок

Частая задача интерфейса: вывести количество элементов с правильным окончанием (например: «Найдено 22 элемента»).

Раньше разработчики писали свои функции declension($n, $form1, $form2, $form5). В D7 есть штатное решение.

Использование класса

Класс находится в пространстве имен Bitrix\Main\Grid.

use Bitrix\Main\Grid\Declension;

// Создаем объект склонения
// Параметры: (форма для 1, форма для 2, форма для 5)
$declension = new Declension('товар', 'товара', 'товаров');

$count = 1;
echo "$count " . $declension->get($count); // 1 товар

$count = 2;
echo "$count " . $declension->get($count); // 2 товара

$count = 5;
echo "$count " . $declension->get($count); // 5 товаров

$count = 112;
echo "$count " . $declension->get($count); // 112 товаров

Работа с другими языками

Для английского языка (где всего две формы: 1 item, 2 items) нужно передавать только два аргумента или использовать ту же форму для множественного числа дважды.

// Для английского
$declensionEn = new Declension('item', 'items'); 

echo "1 " . $declensionEn->get(1); // 1 item
echo "5 " . $declensionEn->get(5); // 5 items

Примечание: Класс Declension использует простую логику.

Для полноценной мультиязычности (с поддержкой сложных правил славянских или восточных языков) правильнее использовать языковые файлы с поддержкой Plural Form (доступно в Loc::getMessage с плейсхолдерами), но для простых задач (рус/анг) Declension подходит идеально.

Вывод:
Не пишите свои велосипеды для склонения слов.

Класс Bitrix\Main\Grid\Declension прост, надежен и доступен в ядре «из коробки».

Bitrix\Main\Grid\Declension, склонение по числам битрикс, plural form bitrix, 1 товар 2 товара 5 товаров, языковые файлы.

Мой рейтинг:

Добавить комментарий

Related Post

Использование Bitrix\Main\ORM\Query\Query для построения сложных запросов к Highload-блокамИспользование Bitrix\Main\ORM\Query\Query для построения сложных запросов к Highload-блокам

Средний рейтинг Еще нет оценок Highload-блоки в Битрикс — это эффективный инструмент для работы с крупными объемами данных, значительно превосходящий стандартные инфоблоки по производительности, особенно в условиях высоких нагрузок. Они

События в D7 ORM: OnBeforeAdd, OnAfterUpdate и другие. Полный контроль над даннымиСобытия в D7 ORM: OnBeforeAdd, OnAfterUpdate и другие. Полный контроль над данными

Средний рейтинг Еще нет оценок D7 ORM предоставляет мощный механизм событий, который позволяет вмешиваться в процесс сохранения, обновления или удаления данных. Это правильный способ добавить бизнес-логику (например, проверку, отправку уведомлений,

Как изменить группу маркировки товара в BitrixКак изменить группу маркировки товара в Bitrix

Средний рейтинг Еще нет оценок В Bitrix существует несколько способов изменить пользовательское свойство «Группа маркировки» (UF_PRODUCT_GROUP) у товара. Рассмотрим два основных метода и определим, какой из них предпочтительнее. Метод 1: