Php Zend框架URL国际化&;路由

Php Zend框架URL国际化&;路由,php,zend-framework,Php,Zend Framework,我希望有一个更好的用户体验国际化的网址(所有在内部网,所以没有搜索引擎优化担心) 因此,基本上我希望URL如下(在本例中,为英语、荷兰语和法语): /nl/部分一点问题都没有,SO和互联网上都有描述。但我的问题是路由到控制器和操作 目前,我已从默认路由器扩展,并使用Zend_Translate将所有内容翻译为英语,并基于英语名称设置控制器和操作 然而,我一直觉得应该有更好的方法来做到这一点。有人知道zend框架中是否有用于此目的的标准组件,或者之前可能已经创建了类似的组件 规格: PHP 5.4

我希望有一个更好的用户体验国际化的网址(所有在内部网,所以没有搜索引擎优化担心)

因此,基本上我希望URL如下(在本例中,为英语、荷兰语和法语):

/nl/
部分一点问题都没有,SO和互联网上都有描述。但我的问题是路由到控制器和操作

目前,我已从默认路由器扩展,并使用Zend_Translate将所有内容翻译为英语,并基于英语名称设置控制器和操作

然而,我一直觉得应该有更好的方法来做到这一点。有人知道zend框架中是否有用于此目的的标准组件,或者之前可能已经创建了类似的组件

规格:

PHP 5.4.4
Zend Framework 1.11.10

您不必复制控制器。 我是这样做的:

$translate = new Zend_Translate(
  array(
    'adapter' => 'array',
    'content' => 'PATH_TO_LANGUAGES/en_url.php',
    'locale'  => 'en'
  )
);

$translate->addTranslation(array(
  'content' => 'PATH_TO_LANGUAGES/nl_url.php',
  'locale' => 'nl'
));

$translate->setLocale('en');

Zend_Controller_Router_Route::setDefaultTranslator($translate);
语言文件如下所示: 可以转换控制器或动作。但我不知道你是否也能翻译查询参数

// en_url.php
return array(
  'products' => 'products',
);

// nl_url.php
return array(
  'products' => 'producten',
);

了解更多信息。

我找不到setDefaultTranslator的存在。因此,我通过扩展路由器来完成翻译工作。这确实使它更干净了。tnx@nvanesch我已经插入了一个链接,以便您可以阅读更多有关它的信息。
// en_url.php
return array(
  'products' => 'products',
);

// nl_url.php
return array(
  'products' => 'producten',
);