Bonjour,
J'ai développé un plugin de controlleur pour pouvoir détecter la langue (stockée dans l'URL) et l'utiliser pour traduire tout le site (les routes, le texte et le texte affiché par Zend_Navigation).
Comme je comprends la doc, Zend_Translate est censé récupérer Zend_Locale comme locale à utiliser. Mon plugin effectue quelque chose dans routeStartup, donc avant la traduction de la route (ou n'importe quelle traduction). Logiquement, si je change la locale contenue dans le registre (enregistrée avec la clé Zend_Locale), cette locale sera automatiquement utilsiée par tous les Zend_Translate et je n'aurais donc pas besoin de modifier manuellement la locale de mes différents Zend_Translate.
Les deux dernières lignes, normalemenet, ne devrait pas avoir besoin d'être appelées puisque, par défaut, les Zend_Translate devraient utiliser l'objet Zend_Locale stockée dans le registre (et la modification est répercutée automatiquement). Or, je suis obligé de mettre à jour la locale, pourquoi ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public function routeStartup(Zend_Controller_Request_Abstract $request) { $locale = Zend_Registry::get('Zend_Locale'); $translate = Zend_Registry::get('Zend_Translate'); // Trouve une nouvelle locale $locale->setLocale(quelqueChose); Zend_Controller_Front::getInstance()->getRouter()->setGlobalParam('lang', $locale->getLanguage()); //Zend_Controller_Router_Route::getDefaultTranslator()->setLocale($locale); //$translate->setLocale($locale); }
Partager