我正在为多语言网站实施翻译。一切正常,但当用户尝试更改语言时,语言保持不变。
这是路线...
index:
path: /{_locale}
defaults: { _controller: HotelIndexBundle:Index:index , _locale:hr}
requirements:
_locale: hr|en
在twig模板中,我必须使用...链接到此路径
path('index');
让我说我的索引页面www.example.com(默认为' hr')。然后,用户将更改为www.example.com/en。有用。但是当它尝试使用路径(' index')返回hr时,页面将恢复为相同的www.example.com/en。
www.example.com/en/contact等其他网址参数也存在问题。如何将其更改为www.example.com/hr/contact并留在/联系页面?
答案 0 :(得分:2)
看看JMSi18nRoutingBundle。它完全符合您的要求。
答案 1 :(得分:2)
让我说我在我的索引页面www.example.com(默认为 的 '小时')。然后,用户将更改为www.example.com/en。有用。但是什么时候 它尝试使用path('index')返回hr,页面恢复为 同样www.example.com/en。
您应该在config.yml文件中进行以下配置:
<强> config.yml 强>
framework:
translator: { fallback: "%locale%" }
default_locale: "%locale%"
locale参数应在parameters.yml文件中定义:
<强> parameters.yml 强>
parameters:
locale: hr
其他网址参数也存在问题,例如 的 www.example.com/en/contact。如何将其更改为 www.example.com/hr/contact并留在/联系页面?
可以这样做:
{% set requestParams = app.request.attributes.get('_route_params') %}
{% set requestRoute = app.request.attributes.get('_route') %}
<a href="{{ path(requestRoute, requestParams|merge({'_locale' : 'en'})) }}">en</a>
<a href="{{ path(requestRoute, requestParams|merge({'_locale' : 'hr'})) }}">hr</a>