Translate the Flash Message
Asked Answered
B

3

9

I'm trying to translate the flash message I sent, if a form is succesful. The normal request looks like this:

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

So I tried to translate the message with the following variable:

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

After sending the form the message shows "contact.message.email_has_been_sent". So it didn't found the translation, but the variable is right. I tested it inside a template file. Has anyone an idea, how I could fix this? I didn't found anything useful yet.

Breedlove answered 18/2, 2015 at 16:38 Comment(0)
S
13

Presuming you are in a Controller:

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

Read how to handle Translations.

Saros answered 18/2, 2015 at 19:25 Comment(2)
Since SF 2.8, you can simply do $this->addFlash().Vala
@VictorToulouse this is not the point of the question, but what if you don't extend the base controller of the FrameworkExtraBundle? Anyway I agree that I should expand my very "old" answer to cover all the way offered by the framework :-)Saros
O
4

Alternatively, in twig:

{% for flashMessage in app.session.flashbag.get('notice') %}
    <p>{{ flashMessage|trans }}</p>
{% endfor %}
Oman answered 18/11, 2016 at 15:19 Comment(2)
I would tend to prefer this method as it makes calling the translator from the controller unnecessary, but it gets complicated when you need to translate messages with placeholders.Vala
See possible problems with this approach here: coderwall.com/p/ybup5a/symfony2-translating-flash-messagesHazy
L
0

In Symfony 5, you should inject TranslatorInterface and call trans() method passing the message id, for example:

public function method(TranslatorInterface $translator)
{
    $translator->trans('Message Id'); 
}
Latour answered 22/8, 2022 at 10:13 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.