首页 > 解决方案 > 如何在 Twig 中定义“如果最后 2 位数字不是......”

问题描述

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

{% 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/等。我能做些什么呢?

标签: twig

解决方案


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

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


推荐阅读