Bonjour à tous,

Je travaille toujours sur mon application (pour votre plus grand malheur ) et suis de nouveau confronté à un problème certainement banal.

J'initialise mes routes dans mon boostrap ainsi que ma navigation et mes plugins
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
protected function _initNavigation()
	{
	$this->bootstrap('layout');
        $layout = $this->getResource('layout');
        $view = $layout->getView();		
        $configMenu = new Zend_Config_Xml(APPLICATION_PATH . '/configs/navigation.xml', 'nav');
		$containerMenu = new Zend_Navigation($configMenu);
 
        if(!$this->_auth->hasIdentity()) {$view->navigation($containerMenu)->setAcl($this->_acl)->setRole('guest');}
        else $view->navigation($containerMenu)->setAcl($this->_acl)->setRole($this->_auth->getStorage()->read()->role);
    }
 
 
 
    protected function _initRoutes()
    {
    	$router = new Zend_Controller_Router_Rewrite();
        $router->addRoute(
            "basic",
            new Zend_Controller_Router_Route(
                "/:lang/:module/:controller/:action/*",
                array(
                    //"language"=>"fr",
                	"lang"=>"fr",
                	"module"=>"index",
                    "controller"=>"index",
                    "action"=>"index")
            )
        );
 
        $frontController = Zend_Controller_Front::getInstance();
        $frontController->throwExceptions(true);
        $frontController->setRouter($router);
    }
 
    protected function _initPlugins()
	{
	    $front = Zend_Controller_Front::getInstance();
        $front->registerPlugin(new monProjet_LangSelector());
    }
Le plugin contient la sélection de la langue à utiliser ainsi que le chargement des traductions
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class monProjet_LangSelector
extends Zend_Controller_Plugin_Abstract
{
 
 
    public function routeShutdown (Zend_Controller_Request_Abstract $request)
    {
	$lang = $request->getParam('lang','');
	if ($lang !== 'en' && $lang !== 'fr')
	    $request->setParam('lang','en');
 
	$lang = $request->getParam('lang');
 
 
	$zl = new Zend_Locale();
	$zl->setLocale($lang);
	Zend_Registry::set('Zend_Locale', $zl);
    $this->_langue=$lang;
 
	$translate = new Zend_Translate('csv', APPLICATION_PATH . '/languages/'. $lang . '.csv' , $lang);
	Zend_Registry::set('Zend_Translate', $translate);
 
    Zend_Controller_Front::getInstance()->getRouter()->setGlobalParam('lang', $lang);
    }
 
}
Tout ceci fonctionne presque parfaitement. La navigation est traduite, Zend_Registry::set('Zend_Translate', $translate); semble remplir son travail.

Cependant, le router lui ne traduit pas les url. D'où peut venir le problème?
La doc de Zend_Router indique bien :
Translated segments

The standard route supports translated segments. To use this feature, you have to define at least a translator (an instance of Zend_Translate) via one of the following ways:

*

Put it into the registry with the key Zend_Translate.
*

Set it via the static method Zend_Controller_Router_Route::setDefaultTranslator().
*

Pass it as fourth parameter to the constructor.
Une petite aide à nouveau s'il vous plaît?