我在 Zend_Navigation、Zend_Translate 和所需路由的组合方面遇到了一些困难。
我的站点导航是通过基于 XML 文件的 Zend_Navigation 完成的。我现在已经基于 Zend_Translate 向站点添加了翻译,并添加了以下对引导程序的路由更改:
protected function _initRoutes()
$config = new Zend_Config($this->getOptions());
$languages = array_keys($config->languages->toArray());
$zl = new Zend_Locale();
$lang = in_array($zl->getLanguage(), $languages)
? $zl->getLanguage() : 'en';
$zfc = Zend_Controller_Front::getInstance();
// add language to default route
$route = new Zend_Controller_Router_Route(
':lang/:module/:controller/:action/*',
array('controller'=>'index',
'action' => 'index',
'module'=>'default',
'lang'=>$lang));
$router = $zfc->getRouter();
$router->addRoute('default', $route);
$zfc->setRouter($router);
然后,我使用 preDispatc 方法创建了一个 View_Helper:
$language = $request->getParam('lang','');
if ($language !== 'en' && $language !== 'da')
$request->setParam('lang','en');
$language = $request->getParam('lang');
if ($language == 'en')
$locale = 'en_EN';
else
$locale = 'da_DK';
$zl = new Zend_Locale();
$zl->setLocale($locale);
Zend_Registry::set('Zend_Locale', $zl);
$translate = new Zend_Translate('csv', APPLICATION_PATH . '/configs/language/'. $language . '.csv' , $language);
Zend_Registry::set('Zend_Translate', $translate);
现在,当我转到:“site/ en /module/controller/action”时,它工作正常。
当我转到:“site/ da /module/controller/action”时,翻译工作正常,但我来自 Zend_Navigation 的链接指向默认的“en”语言链接“site/ en /module2/controller2/”
我无法弄清楚您在 /da/ 的语言。任何帮助都将不胜感激。
亲切的问候,
莫腾