Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
J'ai parcouru pas mal de tutos et docs concernant le zend_translate mais impossible de le faire fonctionner.......encore une bêtise quelque part ^^ :
J'initialise le translate et la session via mon application.ini chargé dans le zend_application :
... ; Session resources.session.save_path = APPLICATION_PATH "/cache" resources.session.use_only_cookies = true resources.session.remember_me_seconds = 864000 ; Locale resources.locale.registry_key = "Zend_Locale" resources.locale.default = "en" ; Translate resources.translate.registry_key = "Zend_Translate" resources.translate.adapter = "array" resources.translate.data = APPLICATION_PATH "/languages" resources.translate.options.scan = "filename" resources.translate.options.logUntranslated = true ...
Ensuite dans mon boot strap j'initialise un locale par défaut dans un session_namespace :
... $session = new Zend_Session_Namespace('translate'); $session->locale = "en_US"; ...
Puis pour toute mes views, j'ai un Zend_View_Helper_Translate qui récupère le locale dans la session et initialise l'objet zend_translate récupéré dans le registry :
class Zend_View_Helper_Translate{ /** * @var Zend_Translate */ protected $_translate = null; public function translate($message, $param = null) { $session = new Zend_Session_Namespace('translate'); $registry = Zend_Registry::getInstance(); $this->_translate = $registry->get('Zend_Translate'); $this->_translate->setLocale($session->locale); echo $this->_translate->_($message); } }
Mon problème vient quand je veux changer le locale, j'appelle une action translateAction qui me change le locale en session et me redirige vers le home :
function translateAction() { $session = new Zend_Session_Namespace('translate'); $session->locale = 'fr_FR'; $this->_redirect('home/'); }
Mon problème est que dans le Zend_View_Helper_Translate, appelé lors de la redirection (donc après le changement du locale en session), c'est toujours en_US dans le locale en session.....
Merci pour votre aide,
Jo
Hors ligne
Bin oui, c'est logique... Tu fais un redirect donc tu rappelles ton bootstrap donc tu redéfinis en_US dans ta session.
Ton bootstrap ne devrait pas définir la langue sauf si elle n'est pas définie ou si elle est passée en paramètre.
Hors ligne
Ouai j'ai vu ça par après.....une bêtise comme je disais ^^.
Merci pour ta réponse,
++
Jo
Hors ligne
Pages: 1