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