Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 25-05-2009 18:04:10

GregLeBarbar
Nouveau membre
Date d'inscription: 23-05-2009
Messages: 4

[Zend_Locale][1.7.6]Problème pour modifier définitivement Zend_Locale

Bonjour,

j'essaie de mettre en place la gestion de plusieurs langues via Zend_Translate, Zend_Locale, Zend_Registry ...
Le problème est que le changement de langue est bien effectué une première fois (de francais à anglais) mais ensuite, en naviguant sur le site, on retourne à la langue par défaut (le francais). L'url, par contre, reste avec la bonne langue : index/index/lang/en

Dans mon bootstrap, j'ai :

Code:

public static function setTranslate()
    {
        $translate = new Zend_Translate('Array', self::$root . '/application/languages/french.php', 'fr');
        $translate->addTranslation(self::$root . '/application/languages/english.php', 'en');
        
        $locale = new Zend_Locale();
        
        if (Zend_Registry::isRegistered('Zend_Locale')){
               $locale = Zend_Registry::get('Zend_Locale');    
        }
       
        $translate->setLocale($locale);
        Zend_Registry::set('Zend_Translate', $translate);
        Zend_Validate_Abstract::setDefaultTranslator($translate);
        Zend_Form::setDefaultTranslator($translate);
    }

Dans le controller par défaut :

Code:

public function languageAction()
    {
        $this->view->title = "Action";
        
        $request = $this->getRequest();
        $params = $request->getParams();
        
        $locale = $params['lang'];
        
        $translate = Zend_Registry::get('Zend_Translate');
        $translate->setLocale($locale);
        
        Zend_Registry::set('Zend_Translate', $translate);
        Zend_Registry::set('Zend_Locale', $locale);
    }

Dans mon layout :

Code:

<a href="<?php echo $this->url(array('controller'=>'index', 'action'=>'language', 'lang' => 'fr'));?>">Francais</a>
<a href="<?php echo $this->url(array('controller'=>'index', 'action'=>'language', 'lang' => 'en'));?>">Anglais</a>

Hors ligne

 

#2 26-05-2009 15:40:33

GregLeBarbar
Nouveau membre
Date d'inscription: 23-05-2009
Messages: 4

Re: [Zend_Locale][1.7.6]Problème pour modifier définitivement Zend_Locale

Dans la méthode init de mon controlleur par défaut, j'effectue également le bout de code présent dans l'action languageAction (il faudra le factoriser plus tard en utilisant une aide d'action (enfin je crois ... pas encore familier avec les termes ...))

Code:

public function init() {
        
    $request = $this->getRequest();
        $params = $request->getParams();
        $locale = $params['lang'];
        
        $translate = Zend_Registry::get('Zend_Translate');
        $translate->setLocale($locale);
        
        Zend_Registry::set('Zend_Translate', $translate);
        Zend_Registry::set('Zend_Locale', $locale);
        
}

Ca marche maintenant !! La langue est bien gérée pour toutes les requêtes suivantes.

Il me reste plus qu'à faire en sorte d'être redirigé sur la page précédente.

Mais est ce que c'est la bonne manière de faire ou il y avait plus simple ?

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages