Symfony2+Twig, variable en la traducción return "Un mensaje debe ser un texto simple"
Pregunta
Cuando estaba haciendo PHP simple, simplemente estaba haciendo esto:
printf(_("Hello %s !"), $name);
Ahora con Twig, debo usar la etiqueta trans. Así que he copiado/pegado el ejemplo de documentación, y aquí está mi plantilla completa:
{% extends 'MyAppBundle::layout.html.twig' %}
{% block content %}
<h1>
{% trans %}
Hello {{ name }}!
{% endtrans %}
</h1>
{% endblock %}
¿Por qué Symfony devuelve la siguiente exepción?
Un mensaje debe ser un texto simple en "MyAppbundle :: Home.html.twig"
500 Error de servidor interno - TWIG_ERROR_SYNTAX
Solución
La sintaxis precisa para las traducciones es un poco diferente en Symfony2 que en la ramita independiente. Querrás consultar la documentación de Symfony2 para traducciones en plantillas de ramas, encontrado aquí. La sintaxis correcta se vería algo así:
{% trans %}Hello %name%!{% endtrans %}
Otros consejos
Una broca que falta con la respuesta anterior es la parte "con" que se necesita para hacer el reemplazo de la parte variable del mensaje.
{% trans with {'%name%':name} %}Hello %name%!{% endtrans %}