Heren van het goede leven.
Ik maak een website met het Zend Framework en ik heb een probleempje met Zend_Translate waar ik niet uitkom. Het werkt als volgt. In mijn frontcontroller scan ik mijn directory met talen, een Zend_Translate object wordt aangemaakt. Dit werkt, wanneer ik daarna het object dump zitten nederlands en engels allebei in het object. Ook kan ik in mijn frontcontroller via setLocale() de language setten en dan werkt dit. Engels of nederlands, afhankelijk van wat ik daar neerzet wordt getoond.
Het probleem ligt echter als ik tijdens het navigeren over de pagina op een vlaggetje druk. Ik heb het zo geregeld dat dan naar een LangController setAction wordt gestuurd met als parameter de taal van het vlaggetje. In de actie wilde ik de parameter uitlezen, de locale opnieuw setten en vervolgens redirecten naar de home pagina. Hier gaat het echter fout. Op de home pagina is alles gewoon weer de standaardtaal. Dit komt hoogstwaarschijnlijk omdat de in de frontcontroller de taal gewoon WEER wordt geset bij een nieuwe request. Mijn vraag is, hoe los ik dit op?
De set action werkt; als ik een exit plaats op et einde van de action en daarvoor het translate object dump staat deze perfect op de taal die ik heb geset.
Hier is de setAction:
Alvast bedankt...
//edit: ook een Zend_Registry::isRegistered() in de frontcontroller werkt niet. het lijkt of er bij een nieuwe request die Zend_Translate value in de registry wordt weggehaald ofzo. Heel vreemd..
Ik maak een website met het Zend Framework en ik heb een probleempje met Zend_Translate waar ik niet uitkom. Het werkt als volgt. In mijn frontcontroller scan ik mijn directory met talen, een Zend_Translate object wordt aangemaakt. Dit werkt, wanneer ik daarna het object dump zitten nederlands en engels allebei in het object. Ook kan ik in mijn frontcontroller via setLocale() de language setten en dan werkt dit. Engels of nederlands, afhankelijk van wat ik daar neerzet wordt getoond.
code:
1
2
3
4
5
6
| $translate = new Zend_Translate('gettext', '../application/languages/', '', array('scan' => Zend_Translate::LOCALE_DIRECTORY)); //Default language, comment this line to let the framework detect appropriate language itself. $translate->setLocale($config->defaultLanguage); Zend_Registry::set('Zend_Translate', $translate); |
Het probleem ligt echter als ik tijdens het navigeren over de pagina op een vlaggetje druk. Ik heb het zo geregeld dat dan naar een LangController setAction wordt gestuurd met als parameter de taal van het vlaggetje. In de actie wilde ik de parameter uitlezen, de locale opnieuw setten en vervolgens redirecten naar de home pagina. Hier gaat het echter fout. Op de home pagina is alles gewoon weer de standaardtaal. Dit komt hoogstwaarschijnlijk omdat de in de frontcontroller de taal gewoon WEER wordt geset bij een nieuwe request. Mijn vraag is, hoe los ik dit op?
De set action werkt; als ik een exit plaats op et einde van de action en daarvoor het translate object dump staat deze perfect op de taal die ik heb geset.
Hier is de setAction:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| public function setAction() { $this->_helper->viewRenderer->setNoRender(); $newLang = $this->getRequest()->getParam('lang'); $translate = Zend_Registry::get('Zend_Translate'); $translate->setLocale($newLang); //print_r($translate); //exit(); Zend_Registry::set('Zend_Translate', $translate); $this->_redirect('/'); } |
Alvast bedankt...
//edit: ook een Zend_Registry::isRegistered() in de frontcontroller werkt niet. het lijkt of er bij een nieuwe request die Zend_Translate value in de registry wordt weggehaald ofzo. Heel vreemd..
[ Voor 4% gewijzigd door Nic0demus op 04-07-2008 11:52 ]
Life would be so much easier if I had the source code...