Je développe une application multilingue. Dans le bootstrap il y a la configuration des routes:Zend_Controller_Router_Route: Impossible de trouver un traducteur
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);
.....
}
Je ne peux pas régler le traducteur par défaut Zend_Controller_Router_Route (pour les segments traduits) parce que je ne sais pas le paramètre de langue dans l'objet de la demande. je reçois le paramètre de langue au cours de la Plugin multilingue "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
////////////////////////
}
Quand je tape l'adresse "http://servername/it/utenti/registrati" i get l'exception avec le message "Impossible de trouver un traducteur".
Comment puis-je résoudre ce problème? Antonio (Italie)
que dire de changer lorsque votre plugin se déclenche. Donc, au lieu de routeShutdown, vous faites routeStartup. – Ballsacian1