Symfony';trans';域内细枝模板

Symfony';trans';域内细枝模板,symfony,localization,twig,gettext,Symfony,Localization,Twig,Gettext,我想这样做: $this->get('translator')->trans('notice.unregistered', array(), 'index'); 在Twig模板内部,所以我不必将其作为参数传递。如何解决?解决方案是: {% trans from "domain" %}text{% endtrans %} 您还可以使用trans filter执行以下操作: {{ 'translationkey'|trans({},'domain') }} 您可以添加自定义函数来更

我想这样做:

$this->get('translator')->trans('notice.unregistered', array(), 'index');
在Twig模板内部,所以我不必将其作为参数传递。如何解决?

解决方案是:

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

您还可以使用trans filter执行以下操作:

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

您可以添加自定义函数来更改模板中的域

添加您的功能:

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

如果使用管道而不是块来使用trans filter,你会怎么做?当你使用它来转换变量中的字符串时,它不起作用。Max,你一定是做错了什么。这也适用于变量(请参见:例如,
{message | trans({'%name%':'Fabien'},“app”)}
)。它的目的是处理变量,对于字符串常量
{%trans%},值{%endtrans%}
将是一种方法。对于串联表达式,您必须在trans修饰符之前设置它:
{%set SALLATION='SALLATION.~person.gender%}{{{SALLATION{}trans({},'domain')}}
直接
{{{'saLLATION.~person.gender{124; trans({},'domain')}}}
不起作用。这不适用于独立的细枝,只适用于Symfony细枝。