我正在开发一个多语言应用程序。在引导有路由设置:Zend_Controller_Router_Route:找不到翻译
protected function _initRoutes() {
$this->bootstrap('frontController');
$router = $this->frontController->getRouter();
// PAGES ROUTE
$page = new Zend_Controller_Router_Route(
':language/:ident',
array(
'module' => 'core',
'controller' => 'pagine',
'action' => 'view'
),
array(
'ident' => '[a-zA-Z-_0-9]{3,}',
'language' => '[a-z]{2}'
)
);
$registrazione = new Zend_Controller_Router_Route(
':language/@utenti/@registrati',
array(
'module' => 'core',
'controller' => 'utenti',
'action' => 'registrazione'
),
array(
'language' => '[a-z]{2}'
)
);
$router->addRoute('page', $page);
$router->addRoute('registrazione', $registrazione);
.....
}
我可以默认译者不设置Zend_Controller_Router_Route中(用于翻译段),因为我不知道在请求对象的语言参数。 我得到在“routeShutdown”在多语言插件语言参数:
class Activa_Controller_Plugin_Multilanguage extends Zend_Controller_Plugin_Abstract {
public function routeShutdown(Zend_Controller_Request_Abstract $request) {
$language = $request->getParam("language");
$locale = new Zend_Locale($language);
$translate = new Zend_Translate('array', APPLICATION_PATH.'/config/lang/'.$language.'.php', $locale);
Zend_Registry::set('Zend_Locale', $locale);
Zend_Registry::set('Zend_Translate', $translate);
Zend_Controller_Router_Route::setDefaultTranslator($translate);
////////////////////////
// BUT NOW IS TOO LATE
////////////////////////
}
当我输入地址“http://servername/it/utenti/registrati”我得到消息的例外“找不到翻译”。
我该如何解决? Antonio(意大利)
当你的插件触发时怎么样。因此,而不是routeShutdown你做routeStartup。 – Ballsacian1 2010-06-02 23:20:51