2011-10-07 65 views
23

域里面,我想这样做:Symfony的“反式”枝杈模板

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

内部枝条模板,所以我没有通过这个作为参数。怎么样?

回答

23

解决的办法是:

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

你会如何使用反式管道过滤器做到这一点,而不是块? – krishna

52

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

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

当您使用它从变量转换字符串时,它不起作用。 –

+2

最大你必须做错了什么。这也适用于变量(参见:http://symfony.com/doc/current/book/translation.html#twig-templates,例如'{{message | trans({'%name%':'Fabien'},应用程序“)}}')。 – flu

+0

这绝对起作用!即使有变数。 – naitsirch

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