Плюрализация строк в Laravel для русского языка

6 апреля 2019

Часто встречается задача выбора окончания для строк во множественном числе. В Laravel есть готовое решение, которое описано в документации, но мне не удалось найти готового примера, который бы работал корректно с русским языком. Вот простое решение, которое покрывает большинство случаев:

{{ trans_choice('Публикация|Публикации|Публикаций', $user->articles->count()) }}

В редких ситуациях могут возникать нюансы, которые нужно решать с помощью уточнения числовых промежутков. Об этом подробнее читайте в документации.

Комментарии 2
  1. Николай 9 июня 2024

    Дополню:
    Чтобы функционал заработал, надо для начала создать файл локализации: resources/lang/ru/messages.php
    В нем вернуть массив:
    return [
    'articles' => '{0} нет статей|{1} :count статья|[2,4] :count статьи|[5,*] :count статей',
    ];

    И в шаблонизаторе уже используем trans_choice:
    {{ trans_choice ('messages.articles',$user->articles->count (), ['count' => $user->articles->count ()]) }}

  2. Лавр 2 июля 2024

    В таком случае будет — 21 статей, 102 статей

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