在ZF2应用程序中更改当前URL中的区域设置参数


Change locale param in current URL in a ZF2 application

基本上,我希望能够将访问者重定向到与翻译后的URL等效的当前翻译页面。

我已经准备好了内容和url转换,并且我的所有路由都以:locale参数开始。

如何翻译当前URL?

例如:在页面上http://domain.com/fr/actualites我想要一个指向http://domain.com/en/news.

我在提出这个问题后不久就找到了解决方案。

首先检索当前使用的路由名称:

<?php
$sm = $this->getHelperPluginManager()->getServiceLocator();
$route = $sm->get('Application')->getMvcEvent()->getRouteMatch()->getMatchedRouteName();
?>

然后显示更改了:locale参数的URL,同时要求助手保留并翻译当前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助手使用当前请求参数来组装URL