【发布时间】:2011-10-07 15:46:26
【问题描述】:
我想这样做:
$this->get('translator')->trans('notice.unregistered', array(), 'index');
在 Twig 模板中,所以我不必将其作为参数传递。怎么样?
【问题讨论】:
标签: symfony localization twig gettext
我想这样做:
$this->get('translator')->trans('notice.unregistered', array(), 'index');
在 Twig 模板中,所以我不必将其作为参数传递。怎么样?
【问题讨论】:
标签: symfony localization twig gettext
您也可以使用反式过滤器:
{{ 'translationkey'|trans({},'domain') }}
【讨论】:
{{ message|trans({'%name%': 'Fabien'}, "app") }})。
{% trans %}The value{% endtrans %} 将是要走的路。
{% set salutation = 'salutation.' ~ person.gender %} {{ salutation | trans({}, 'domain') }} 直接 {{ 'salutation.' ~ person.gender | trans({}, 'domain') }} 不起作用。
解决办法是:
{% trans from "domain" %}text{% endtrans %}
【讨论】:
您可以添加自定义函数来更改模板内的域。
添加你的功能:
$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) }}
【讨论】: