IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Autres composants PHP Discussion :

Changer de Zend_Locale ?


Sujet :

Autres composants PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 214
    Par défaut Changer de Zend_Locale ?
    Bonjour.

    Mon problème est le suivant: je ne parviens pas à changer la langue qui a été définie dans le bootstrap.

    Ce que je fais: par défaut j'affiche mes pages en anglais et lors de l'identification d'un membre, je récupère sa langue en base de donnée et je modifie le Zend_Locale avant de le réattribuer à Zend_Translation.

    Le code dans mon bootstrap:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $locale = new Zend_Locale("en");
    // Chargement du fichier de traduction
    $translator = new Zend_Translate('tmx', '../application/translation/translations.tmx', $locale);
    Zend_Registry::set('translator', $translator);
    Le code dans mon Helper de vue (pour récupérer mon translator):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    // On cherche le translator dans le registre
    $view->translator = Zend_Registry::get('translator');
    Le code dans ma vérification de connexion:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // Authentification réussie ; l'identité est stockée dans la session
    $userData = $authAdapter->getResultRowObject(null, 'sPassword');					
    $auth->getStorage()->write($userData);
    $this->view->title = $auth->getIdentity()->sFirstName;
    // On charge la langue du membre.
    $translator = $this->view->translator;
    //unset($translator);
    $locale = new Zend_Locale($auth->getIdentity()->userLanguage);
    $translator = new Zend_Translate('tmx', '../application/translation/translations.tmx', $locale);
    Zend_Registry::set('translator', $translator);
    // On redirige vers la page sécurisée.
    $this->_redirector->gotoUrl('/secure');
    Et paf... ça ne change pas la langue et ça fait encore moins des Chocapic...
    (Bien entendu je suis certain d'avoir mis 'fr' pour le membre qui se connecte ^^)


    Merci d'avance pour votre réponse

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 214
    Par défaut
    Bon bon bon. J'ai pu me débrouiller et je suis enfin arrivé à une solution qui fonctionne... en fait j'en ai même trouvé 2 et j'aimerai savoir laquelle est plus performante que l'autre...

    Ce que j'ai fais est très simple, j'ai un Helper pour mes controller dans lequel j'ai défini la méthode preDispatch().

    Dans celle-ci j'effectue cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $auth = Zend_Auth::getInstance();
    if ($auth->hasIdentity()) {
    	$user = $auth->getIdentity();
    	$locale = new Zend_Locale($user->userLanguage);
    	unset($view->translator);
    	$view->translator = new Zend_Translate('tmx', '../application/translation/translations.tmx', $locale);
    } else {
    	unset($view->translator);
    	$locale = new Zend_Locale('en');
    	$view->translator = new Zend_Translate('tmx', '../application/translation/translations.tmx', $locale);			
    }
    Avant je plaçais mon translator dans mon registre (Zend_Registry) mais je me suis dis que c'était inutile... Maintenant comme je ne sais pas trop comment fonctionne le système en arrière plan donc j'effectue peut-être une énorme tare... peut être un problème de concurrence (2 utilisateurs connectés avec une langue différente...) je demande donc l'avis des plus expérimentés!

    Sinon ce code ne pourrait-il pas se retrouver dans un plugin plutôt?

    Merci d'avance

Discussions similaires

  1. Changer l'image d'une texture
    Par alltech dans le forum DirectX
    Réponses: 5
    Dernier message: 21/08/2002, 01h31
  2. TextOut : comment changer de font
    Par Freakazoid dans le forum DirectX
    Réponses: 2
    Dernier message: 15/07/2002, 20h46
  3. Réponses: 2
    Dernier message: 26/06/2002, 13h16
  4. changer de repertoire et situer
    Par chateau dans le forum C
    Réponses: 4
    Dernier message: 24/06/2002, 11h27
  5. changer l'adresse d'un fichier...
    Par cava dans le forum C
    Réponses: 6
    Dernier message: 05/06/2002, 12h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo