问候,我在从 Twig 模板更改语言时遇到问题。我的目标是让用户可以根据自己的需要切换页面语言。我按照说明做了所有事情: 在用户会话期间使区域设置“粘滞”
我的问题是,如何从 Twig 模板更改存储在会话中的语言?
我最好的猜测是:
{{ app.session.set('_lang', 'en') }}
但结果是,语言更改需要刷新页面两次以显示结果,一次在会话中设置值,第二次根据会话中存储的语言加载页面。请指教!
问候,我在从 Twig 模板更改语言时遇到问题。我的目标是让用户可以根据自己的需要切换页面语言。我按照说明做了所有事情: 在用户会话期间使区域设置“粘滞”
我的问题是,如何从 Twig 模板更改存储在会话中的语言?
我最好的猜测是:
{{ app.session.set('_lang', 'en') }}
但结果是,语言更改需要刷新页面两次以显示结果,一次在会话中设置值,第二次根据会话中存储的语言加载页面。请指教!
解决方案是为所有控制器创建语言环境前缀,并作为 malcolm 提供,使用路由参数:
{{ path(app.request.attributes.get('_route'), app.request.query.all|merge({'_locale': 'en'})) }}
这将允许您在不知道它们的情况下获取路线和路线的参数。然后它将用您的值覆盖 _locale 参数。
在树枝中:
{{path(app.request.attributes.get('_route'),app.request.attributes.get('_route_params')|merge({'_locale': 'en'})) }}
使用 HTML/引导代码
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" id="language_switcher" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><i class="fa fa-globe"></i></a>
<div class="dropdown-menu" aria-labelledby="language_switcher">
<a class="dropdown-item" href="{{ path(app.request.attributes.get('_route'),app.request.attributes.get('_route_params')|merge({'_locale': 'ru'})) }}"><span class="flag flag-ru"> </span> Russian</a>
<a class="dropdown-item" href="{{ path(app.request.attributes.get('_route'),app.request.attributes.get('_route_params')|merge({'_locale': 'en'})) }}"><span class="flag flag-us"> </span> English</a>
</div>
</li>