Gretings,我在使用Twig模板更改语言时遇到问题。 我的目标是让用户可以根据自己的需要切换页面语言。我按照指示做了一切: Making the Locale "Sticky" during a User's Session
我的问题是,如何更改会话中存储的语言,来自Twig模板?
我最好的猜测是:
{{ app.session.set('_lang', 'en') }}
但结果是,语言更改需要刷新两次以显示结果,一次在会话中设置值,第二次根据会话中存储的语言加载页面。请指教!
答案 0 :(得分:2)
解决方案是使用route params为所有控制器和malcolm创建区域设置前缀:
{{ path(app.request.attributes.get('_route'), app.request.query.all|merge({'_locale': 'en'})) }}
答案 1 :(得分:0)
这将允许您在不知道路线的情况下获取路线和路线参数。然后它将用您的值覆盖_locale参数。
在树枝上:
{{path(app.request.attributes.get('_route'),app.request.attributes.get('_route_params')|merge({'_locale': 'en'})) }}
带有HTML / Bootstrap代码
<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>