在 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