Мультиязычность в Symfony2 и Twig - PullRequest
13 голосов
/ 25 ноября 2011

как создать мультиязычную страницу в Symfony?В Symfony 1.0 урок Jobeet имеет очень хорошее описание.Но сейчас на symfony.com я не видел кое-что, связанное с переводом страницы.В Symfony 1.4 echo __ («текст»);используется, но теперь в Symfony 2 используется TWIG.

1 Ответ

19 голосов
/ 25 ноября 2011

На веб-сайте Symfony2 имеется раздел документации.

Вы можете проверить его здесь: Переводы

В принципе, у вас есть доступ в маршрутизации кспециальный атрибут с именем _locale, который вставляется в ваш URL и будет использоваться для установки локали в сеансе.Обратите внимание, что при использовании этой схемы значение локали автоматически устанавливается в Session с помощью Symfony2

http://www.host.com/en/contact // English version
http://www.host.com/fr/contact // French version

Вы также можете указать значение _locale по умолчанию в своих маршрутах, поэтому указывать локаль не обязательнов URL.

http://www.host.com/contact    // English version if default _locale is 'en'

Затем в ветке вы используете специальный преобразователь trans и transchoice для перевода сообщений.Ваши сообщения могут быть ключом или сообщением на естественном языке, которое используется в качестве ключа, обычно на английском языке.

{{ 'user.prompt.welcome' | trans }} {# Key message #}
{{ 'Welcome to our site' | trans }} {# Natural language message #}

Языковой стандарт для перевода сообщения берется из сеанса, поэтому изменение языкового стандарта в сеансе(через URL или программно), изменит перевод на другое.

Используется сервис translator под капотом.

...