2011-10-07 60 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) }}