Как определить, "если последние 2 цифры не ..." в Twig - PullRequest
1 голос
/ 07 марта 2019

Я пытаюсь отобразить слово «комментарии» в правильной форме на русском языке в зависимости от количества комментариев.

{% set numberOfComments = 11 %}
{{ numberOfComments }} {% if numberOfComments|last == 1 and not (numberOfComments ends with 11) %}комментарий{% elseif numberOfComments|last > 1 and numberOfComments|last < 5 %}комментария{% else %}комментариев{% endif %}

Но он игнорирует and not (numberOfComments ends with 11) и отображает «комментарий» вместо «комментариев», даже если количество комментариев равно 11/111 / и т. Д. Что я могу с этим поделать?

1 Ответ

1 голос
/ 07 марта 2019

Как было указано в комментарии, я использовал регулярное выражение.Итак, я придумал это:

{{ numberOfComments }} {% if numberOfComments|last == 1 and not (numberOfComments matches '{11$}') %}комментарий{% elseif numberOfComments|last > 1 and numberOfComments|last < 5 and not (numberOfComments matches '{1[2-4]$}') %}комментария{% else %}комментариев{% endif %}

Регулярное выражение {11$} выбирает любую строку, которая заканчивается на 11. {} - это просто определение регулярного выражения в Twig.

UPD: добавлена ​​недостающая логика для чисел, оканчивающихся на 12-14, которая отсутствовала в вопросе, но фактически необходима.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...