php - Symfony2 和 Twig 中的多语言

标签 php symfony twig multilingual

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

最佳答案

在 Symfony2 网站上有一个文档部分。

您可以在这里查看:Translations

基本上,您可以在路由中访问名为 _locale 的特殊属性,该属性放在您的 url 中,将用于在 session 中设置区域设置。请注意,使用此方案,locale 值由 Symfony2 自动设置到 Session

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'

然后,在 twig 中,您使用特殊的转换器 transtranschoice 来翻译消息。您的消息可以是 key 或用作 key 的自然语言消息,通常为英文。

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

翻译消息的语言环境是从 session 中获取的,因此在 session 中更改语言环境(通过 url 或以编程方式),会将翻译更改为另一件事。

这在后台使用了 translator 服务。

关于php - Symfony2 和 Twig 中的多语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8271125/

相关文章:

javascript - alert() 不适用于 PHP,而是打印在控制台上

mysql - Doctrine 总是返回相同的记录和模式 :update fails

php - Symfony后台事件发送响应错误 session 后

symfony - 如何避免设置者使用 Symfony 和管理面板创建者?

php - 如何在 twig 中显示使用 gaufrette 上传的文件的链接?

php - 在 iframe PHP 中显示 pdf

php - 如何在 phpmyadmin 中创建外键

symfony - 供应商包的 View 中不存在过滤器 "truncate"(twig)

php - 未捕获的 PHP 异常 Doctrine\ORM\Query\QueryException : "[Semantical Error] line?

php - 刷新页面之前等待 UPDATE 完成