Symfony2和Twig中的多语言

时间:2011-11-25 15:23:27

标签: php symfony twig multilingual

如何在Symfony中创建多语言页面?在Symfony 1.0中,Jobeet教程有很好的描述。但现在在symfony.com上,我还没有看到与翻译页面有关的事情。 在symfony 1.4中,echo __('text');使用,但现在使用Symfony 2 TWIG。

1 个答案:

答案 0 :(得分:19)

Symfony2网站上有关于此的文档部分。

您可以在此处查看:Translations

基本上,您可以在路由中访问名为_locale的特殊属性,该属性放在您的网址中,并将用于在会话中设置区域设置。请注意,使用此方案,语言环境值将自动设置为Symfony2的Session

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

您还可以在路线中指定默认的_locale值,因此不必在网址中提供区域设置。

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

然后,在树枝中,您使用特殊变换器transtranschoice来翻译消息。您的消息可以是用作密钥的密钥或自然语言消息,通常是英文。

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

翻译消息的语言环境取自会话,因此更改会话中的语言环境(通过url或programmaticaly)会将翻译更改为其他内容。

这使用了引擎盖下的translator服务。