在 ZF2 应用程序中更改当前 URL 中的语言环境参数
Change locale param in current URL in a ZF2 application
基本上我希望能够将访问者重定向到当前翻译的页面,相当于翻译的 URL。
我有内容和 url 翻译,我所有的路由都以 :locale
参数开头。
如何翻译当前的 URL?
例如:在页面 http://domain.com/fr/actualites I want to have a link that point to http://domain.com/en/news.
我问了这个问题后很快就找到了解决方案。
首先获取当前使用的路由名称:
<?php
$sm = $this->getHelperPluginManager()->getServiceLocator();
$route = $sm->get('Application')->getMvcEvent()->getRouteMatch()->getMatchedRouteName();
?>
然后显示 URL 并更改 :locale
参数,同时要求助手保留并翻译当前 URL 参数:
<?php echo $this->url($route, ['locale' => 'en'], ['force_canonical' => true, 'locale' => 'en_US'], true) ?>
- 第一个
'locale'
用于 url 中的 /en
- 第二个
'locale'
是声明路由翻译器使用的语言
- 这里的
'force_canonical' => true
只是为了显示完整的URL而不是相对的URL。
- 最后的
true
是告诉URL助手使用当前请求参数assemble URL
基本上我希望能够将访问者重定向到当前翻译的页面,相当于翻译的 URL。
我有内容和 url 翻译,我所有的路由都以 :locale
参数开头。
如何翻译当前的 URL?
例如:在页面 http://domain.com/fr/actualites I want to have a link that point to http://domain.com/en/news.
我问了这个问题后很快就找到了解决方案。
首先获取当前使用的路由名称:
<?php
$sm = $this->getHelperPluginManager()->getServiceLocator();
$route = $sm->get('Application')->getMvcEvent()->getRouteMatch()->getMatchedRouteName();
?>
然后显示 URL 并更改 :locale
参数,同时要求助手保留并翻译当前 URL 参数:
<?php echo $this->url($route, ['locale' => 'en'], ['force_canonical' => true, 'locale' => 'en_US'], true) ?>
- 第一个
'locale'
用于 url 中的 - 第二个
'locale'
是声明路由翻译器使用的语言 - 这里的
'force_canonical' => true
只是为了显示完整的URL而不是相对的URL。 - 最后的
true
是告诉URL助手使用当前请求参数assemble URL
/en