如何在Twig中定义“如果后两位不是...”

时间:2019-03-06 23:07:45

标签: twig

我正在尝试根据评论的数量以正确的形式用俄语显示“评论”一词。

{% 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 / etc。我该怎么办?

1 个答案:

答案 0 :(得分:1)

正如评论中所建议的那样,我使用了一个正则表达式。所以我想出了这个:

{{ 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结尾的数字添加了缺失逻辑。