Twig Symfony3细枝中的语言开关
Gretings,我在从Twig模板更改语言时遇到问题。 我的目标是让用户能够根据需要切换页面语言。我按照指示做了一切: 我的问题是,如何从细枝模板更改存储在会话中的语言? 我最好的猜测是:Twig Symfony3细枝中的语言开关,twig,symfony,symfony-3.1,Twig,Symfony,Symfony 3.1,Gretings,我在从Twig模板更改语言时遇到问题。 我的目标是让用户能够根据需要切换页面语言。我按照指示做了一切: 我的问题是,如何从细枝模板更改存储在会话中的语言? 我最好的猜测是: {{ app.session.set('_lang', 'en') }} 但结果是,语言更改需要页面刷新两次以显示结果,一次是在会话中设置值,另一次是根据会话中存储的语言加载页面。请告知 解决方案是为所有控制器和malcolm提供的使用路由参数创建区域设置前缀: {{ path(app.request.
{{ 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>
您是否尝试过jms/i18n路由捆绑包?当我尝试使用iThanks for advise时效果很好,但我不喜欢使用它。您必须使用params获取当前路由,更改/添加每种语言的\u language
参数,例如:{{path(app.request.attributes.get(“'u route'),app.request.query.all | merge({u language:'en'))}
。