Raccourcis : Contenu - rubriques - sous rubriques
FR

Piste : autolocale

Plugin Coord "autolocale"

(version de Jelix supportée 1.1.x)

Jelix et votre portail dans la langue de l'Utilisateur

Je ne vais pas ici répéter la [documentation sur le plugin coord “autolocale”, plugin permettant de gérer automatiquement l'internationalisation de vos templates.

Le propos de cette article consiste à montrer comment avec Jelix, jAuth et jCommunity en particulier, on peut changer la langue de l'utilisateur et ainsi obtenir des pages dans pour sa langue.

jCommunity donc, fourni des évènements, dont un permettant d'enregistrer toutes modifications sur le compte de l'utilisateur, cet evenement est jcommunity_save_account.

Dans la class de mon listener authhavefnubb.listener.php j'aurai donc ce qui suit à chaque modification de mon compte :

   function onjcommunity_save_account ($event) {
        global $gJConfig;
       // recuperation des données saisies dans mon formulaire
        $form = $event->getParam('form');
        if ( $form->getData('member_language') != '') {
            $_SESSION['JX_LANG'] = $form->getData('member_language');
            $gJConfig->locale = $form->getData('member_language');
        }
        // un petit message d'info signalant que le profil est mis à jour
        jMessage::add(jLocale::get('havefnubb~member.profile.updated'),'ok');
   }

l'astuce ici est de mettre $gJConfig→locale = $form→getData('member_language'); avant le jMessage::add pour que le message qui vient juste apres soit traduit immédiatement dans la langue choisie, sinon ce dernier apparaitrait “encore” dans la langue précédante ou celle du portail.

ensuite on opérera de la même façon avec les évènements de jAuth que sont AuthLogin (lors de la connexion) et AuthLogout (lors de la déconnexion)

function onAuthLogin ($event) {
   ...
    $_SESSION['JX_LANG'] = $user->member_language;
    $gJConfig->locale = $user->member_language;
}
 
function onAuthLogout ($event) {
       // suppression de la langue dans la session courante pour récupérer celle du portail
        $_SESSION['JX_LANG'] = '';
        unset($_SESSION['JX_LANG']);
}

et l'on définira notre fichier events.xml comme suit :

  <listener name="authhavefnubb">
      <event name="AuthLogin" />
      <event name="AuthLogout" />
      <event name="jcommunity_save_account" />
   </listener>

Ainsi donc avec une petite dizaine de lignes dans un listener et 3 noeuds XML on a permit à tout utilisateur de notre site d'avoir des pages dans sa langue favorite.

fr/tutoriels/plugins/coord/autolocale.txt · Dernière modification : 2009/09/23 14:48 de foxmask

Fils rss des changements récents dans le wiki Creative Commons License