这是我的打印侧边栏项目的宏。每个
即使翻译项不存在,Twig也总是返回传递给
我该如何在打印一个trans item之前检查它是否存在?
编辑:一个暴力的解决方法可能是(代码未经过测试):
title
属性都是通过在messages.it.yml
中查找'tip.' ~ route
项目来构建的。即使翻译项不存在,Twig也总是返回传递给
trans
过滤器的字符串。例如:tip:
dashboard: Dashboard
模板:
{% _self.sideitem('dashboard', 'home') %} // <a title="Dashboard">...
{% _self.sideitem('fail', 'home') %} // <a title="tip.fail">...
{% macro sideitem(route, icon) %}
{% set active = (route == app.request.get('_route')) %}
{% set icon = icon ? 'icon-' ~ icon ~ (active ? ' icon-white' : '') : '' %}
<li class="{{ active ? 'active' : '' }}">
<a href="{{ path(route) }}" title="{{ ('tip.' ~ route)|trans }}">
<i class="{{ icon }}"></i> {{ ('nav.' ~ route)|trans }}
</a>
</li>
{% endmacro %}
我该如何在打印一个trans item之前检查它是否存在?
编辑:一个暴力的解决方法可能是(代码未经过测试):
<li class="{{ active ? 'active' : '' }}">
{% set look = ('tip.' ~ route) %}
{% set foreign = look|trans %}
{% set has = not(look == foreign) %}
<a href="{{ path(route) }}" {{ not has ? '' : 'title="' ~ foreign ~ '"' }} >
<i class="{{ icon }}"></i> {{ ('nav.' ~ route)|trans }}
</a>
</li>
('nav.' ~ route)|trans
的输出是否与('nav.' ~ route)
相同。 - Florian Klein