2011-10-18 14 views
8

Quando facevo PHP pianura, stavo semplicemente facendo questo:Symfony2 + Ramoscello, variabile in cambio di traduzione "Un messaggio deve essere un semplice testo"

printf(_("Hello %s !"), $name); 

Ora con Ramoscello, devo usare il tag trans . Così ho copia/incolla il documentation example, ed ecco il mio modello completo:

{% extends 'MyAppBundle::layout.html.twig' %} 

{% block content %} 
    <h1> 
     {% trans %} 
      Hello {{ name }}! 
     {% endtrans %} 
    </h1> 
{% endblock %} 

Perché Symfony restituire il seguente exeption?

Un messaggio deve essere un semplice testo in "MyAppBundle :: home.html.twig"

500 Internal Server Error - Twig_Error_Syntax

risposta

11

La sintassi esatta per le traduzioni è un po 'diverso in Symfony2 rispetto a Twig standalone. Dovrai controllare la documentazione di Symfony2 per le traduzioni nei modelli di ramoscello, trovata here. La sintassi corretta sarebbe simile a questa:

{% trans %}Hello %name%!{% endtrans %} 
+3

Ehi, grazie! Ho anche trovato questa sintassi: {{'welcome.message' | trans ({'% titre%': name})}} – FMaz008

+0

La stessa situazione è in Twig standalone. Funziona, grazie. – umpirsky

21

Un po 'mancante con la risposta precedente è il "con" porzione che è necessario per fare la sostituzione della parte variabile del messaggio.

{% trans with {'%name%':name} %}Hello %name%!{% endtrans %} 
+4

Questa dovrebbe essere la risposta selezionata – Simon

+0

Secondo i documenti attuali non è necessario usare la parte 'with', vedere http://symfony.com/doc/current/translation.html#twig-templates – hchr

Problemi correlati