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