在Twig模板中的Symfony'trans'域

时间:2011-10-07 15:46:27

标签: symfony localization twig gettext

我想这样做:

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

Inside Twig模板,所以我不必将其作为参数传递。怎么样?

3 个答案:

答案 0 :(得分:60)

您也可以使用反式过滤器:

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

答案 1 :(得分:26)

解决方案是:

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

答案 2 :(得分:5)

您可以添加自定义功能来更改模板中的域。

添加您的功能:

$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);

然后使用它:

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