web-dev-qa-db-fra.com

Domaine 'trans' Symfony à l'intérieur Twig template

J'aimerais faire ceci:

$this->get('translator')->trans('notice.unregistered', array(), 'index');

Inside Twig template, donc je n'ai pas besoin de passer ceci comme argument. Comment?

28
Misiur

La solution est:

{% trans from "domain" %}text{% endtrans %}
27
Misiur

Vous pouvez également utiliser le filtre trans:

{{ 'translationkey'|trans({},'domain') }}
60
krishna

Vous pouvez ajouter des fonctions personnalisées pour changer de domaine dans vos modèles.

Ajoutez vos fonctions:

$getTextdomain = new Twig_SimpleFunction('get_textdomain', function () {
    return textdomain(NULL);
});
$setTextdomain = new Twig_SimpleFunction('set_textdomain', function ($domain) {
    textdomain($domain);
});

$twig->addFunction($getTextdomain);
$twig->addFunction($setTextdomain);

Ensuite, utilisez-le:

{% set originalDomain = get_textdomain() %}
{{ set_textdomain('errors') }}
{% trans "My error message" %}
{{ set_textdomain(originalDomain) }}
5
kbtzr