Wie um zu überprüfen, ob eine übersetzung Element existiert in Twig/Symfony2?

Hier ist mein makro zum drucken eines sidebar-Element. Jeder title atttribute bauen suchen 'tip.' ~ route Element in messages.it.yml.

Selbst wenn die trans-Element ist nicht vorhanden Zweig immer wieder die Zeichenfolge übergeben, um trans filter. Zum Beispiel:

tip:
    dashboard: Dashboard

Vorlage:

{% _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 %}

Wie kann ich prüfen, ob eine trans-Position vorhanden ist, bevor Sie tatsächlich drucken?

BEARBEITEN: ein brutaler workaround könnte sein (code nicht getestet):

<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>
  • Es gibt keine solche option nativ. Eine Möglichkeit wäre zu prüfen, ob die Ausgabe von ('nav.' ~ route)|trans ist das gleiche, als ('nav.' ~ route).
InformationsquelleAutor gremo | 2012-03-09
Schreibe einen Kommentar