Using Translation in Templates¶
Twig Templates¶
Using Twig Tags¶
Symfony provides a specialized Twig tag trans
to help with message
translation of static blocks of text:
1 | {% trans %}Hello %name%{% endtrans %}
|
ご用心
The %var%
notation of placeholders is required when translating in
Twig templates using the tag.
ちなみに
If you need to use the percent character (%
) in a string, escape it by
doubling it: {% trans %}Percent: %percent%%%{% endtrans %}
You can also specify the message domain and pass some additional variables:
1 2 3 | {% trans with {'%name%': 'Fabien'} from 'app' %}Hello %name%{% endtrans %}
{% trans with {'%name%': 'Fabien'} from 'app' into 'fr' %}Hello %name%{% endtrans %}
|
Using Twig Filters¶
The trans
filter can be used to translate variable texts and complex expressions:
1 2 3 | {{ message|trans }}
{{ message|trans({'%name%': 'Fabien'}, 'app') }}
|
ちなみに
Using the translation tags or filters have the same effect, but with
one subtle difference: automatic output escaping is only applied to
translations using a filter. In other words, if you need to be sure
that your translated message is not output escaped, you must apply
the raw
filter after the translation filter:
1 2 3 4 5 6 7 8 9 10 | {# text translated between tags is never escaped #}
{% trans %}
<h3>foo</h3>
{% endtrans %}
{% set message = '<h3>foo</h3>' %}
{# strings and variables translated via a filter are escaped by default #}
{{ message|trans|raw }}
{{ '<h3>bar</h3>'|trans|raw }}
|
ちなみに
You can set the translation domain for an entire Twig template with a single tag:
1 | {% trans_default_domain 'app' %}
|
Note that this only influences the current template, not any “included” template (in order to avoid side effects).
PHP Templates¶
The translator service is accessible in PHP templates through the
translator
helper:
<?= $view['translator']->trans('Symfony is great') ?>