2015-02-18 9 views
5

Sto provando a tradurre il messaggio flash che ho inviato, se un modulo ha avuto successo. La richiesta normale si presenta così:Traduci il messaggio flash

$request->getSession()->getFlashBag()->add(
      'notice', 
      'Your E-Mail has been sent.' 
     ); 

Così ho provato a tradurre il messaggio con la seguente variabile:

$request->getSession()->getFlashBag()->add(
      'notice', 
      'contact.message.email_has_been_sent' 
     ); 

Dopo l'invio del modulo il messaggio indica "contact.message.email_has_been_sent". Quindi non ha trovato la traduzione, ma la variabile ha ragione. L'ho testato all'interno di un file modello. Qualcuno ha un'idea, come posso risolvere questo problema? Non ho ancora trovato nulla di utile.

risposta

7

presumendo ci si trova in un controller:

$request->getSession()->getFlashBag()->add(
    'notice', 
    $this->get('translator')->trans('contact.message.email_has_been_sent')); 

Leggi come gestire Translations.

+0

Grazie, che funziona. :) – Worstkaes

+0

Da SF 2.8, puoi semplicemente fare $ this-> addFlash(). –

+0

@VictorToulouse questo non è il punto della domanda, ma cosa succede se non estendi il controller di base di FrameworkExtraBundle? Ad ogni modo sono d'accordo sul fatto che dovrei espandere la mia "vecchia" risposta per coprire tutto il modo offerto dal framework :-) –

1

In alternativa, in ramoscello:

{% for flashMessage in app.session.flashbag.get('notice') %} 
    <p>{{ flashMessage|trans }}</p> 
{% endfor %} 
+0

Preferirei preferire questo metodo in quanto rende superfluo chiamare il traduttore dal controller, ma diventa complicato quando è necessario tradurre i messaggi con i segnaposto. –