Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour à tous,
Je débute actuellement avec le Zend framework et j'ai réussi à monter mon appli comme je le souhaitai mais je suis bloqué sur un petit problème de changement de langues depuis 2 jours.
J'ai configuré mon routeur de la sorte dans mon bootstrap :
public function _initRoutes() { $router = Zend_Controller_Front::getInstance()->getRouter(); $route = new Zend_Controller_Router_Route( ':language/:module/:controller/:action/*', array( 'language' => 'en_EN', 'module' => 'default', 'controller' => 'register', 'action' => 'index' ), array('language' => '[a-z]{2}') ); $router->addRoute('routes', $route); }
et ma locale et mes traductions de la sorte :
public function _initLocale(){ $locale = new Zend_Locale(); Zend_Registry::set('Zend_Locale', $locale); $translate = new Zend_Translate('csv', 'languages', 'auto', array('scan' => Zend_Translate::LOCALE_FILENAME)); if (!$translate->isAvailable($locale)) { $translate->setLocale('en_US'); } Zend_Registry::set('Zend_Translate', $translate); }
Tout fonctionne niquel, j'accède à mes page de la sorte : http://www.monsite/fr/controller/action mais par contre je suis actuellement incapable de faire changer de langue via mon URL:
http://www.monsite/en/controller/action
http://www.monsite/de/controller/action
defaultent toujours sur le français quoiqu'il arrive. J'ai tout essayé (avec mes connaissances Zend framework récentes bien sur).
J'ai essayé de récupérer la langue avec $this->getRequest->getParam('language') dans mon controlleur et de passer la valeur via Zend_Registry::set('Zend_Translate', $this->getRequest->getParam('language')); mais cela ne fonctionne pas.
Je dois m'y prendre mal quelque part mais je ne sais où...
Dernière modification par Treyarch (18-08-2009 11:53:24)
Hors ligne
Résolu avec la création d'un simple plugin qui gère les traductions.
class Plugin_Translate extends Zend_Controller_Plugin_Abstract { public function routeShutdown() { $locale = $this->getRequest()->getParam('language'); $translate = new Zend_Translate('csv', 'languages', 'auto', array('scan' => Zend_Translate::LOCALE_FILENAME)); if (!$translate->isAvailable($locale)) { $translate->setLocale('en_US'); } else { $translate = Zend_Registry::get('Zend_Translate'); $translate->setLocale($locale); } Zend_Registry::set('Zend_Translate', $translate); Zend_Registry::set('Zend_Locale', $locale); } }
et dans mon application.ini
resources.frontController.pluginDirectory = APPLICATION_PATH "/plugins" resources.frontController.plugins.Translate = "Plugin_Translate"
Dernière modification par Treyarch (18-08-2009 11:56:05)
Hors ligne
Pages: 1