Dimentica
Dimentica

Reputation: 805

Twig translate whole text of rendered view

Using Twig I render a particular view. I need this view to be translated into a language I choose. I display the view using:

return $this->setup->twig->display($view, $params);

Where $view is the name of the *.html.twig template and $params is an array with the parameters I need to pass.

However, if I want to translate the template before displaying it, how I have to do it?

Currently I have included .yml files for different languages and I have also replaced the text inside the views with the appropriate corresponding values from the yml file.

Apart from everything else, I have also loaded the Twig translator in a file separate from the rest of the project. It has the following code:

require dirname(__DIR__) . '/vendor/autoload.php';

use Symfony\Component\Translation\Translator;
use Symfony\Component\Translation\Loader\ArrayLoader;

class Translation
{
    public $translator;

    public function translator()
    {
        $this->translator = new Translator('fr_FR');
        $this->translator->addLoader('array', new ArrayLoader());
        $this->translator->addResource('array', array(
            'Symfony is great!' => 'J\'aime Symfony!',
        ), 'fr_FR');

        var_dump($this->translator->trans('Symfony is great!'));
    }
}

$show = new Translation;
$show->translator();

And it really displays the translation.

Still, I have no idea how to connect everything together....

Upvotes: 1

Views: 1441

Answers (1)

Cristian Bujoreanu
Cristian Bujoreanu

Reputation: 1167

Did you try to set the locale before rendering your twig view?

public function exampleAction(Request $request) {
    $locale = 'de'; // Set the language
    $request->setLocale($locale);

    $content = $this->renderView($view, $params);

    // Maybe return to default locale....
}

Upvotes: 1

Related Questions