На веб-сайте 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
под капотом.