Accueil du site > Ateliers > Bricolage > Choix du secteur par langue

Choix du secteur par langue

mercredi 21 mars 2007, par Alexandra Guiderdoni

Dans un site bilingue par secteur, où un secteur équivaut à une langue précise, comment faire en sorte que le visiteur arrive directement sur la langue choisie comme préférée par le navigateur, et si aucune langue n’est indiquée, sur la langue du site par défaut ?

ATTENTION : il existe désormais un plugin qui fait la même chose bien plus simplement (à partir de SPIP 1.9.2) : voir en fin d’article.

Introduction

Il n’est en effet pas très utile qu’un visiteur anglophone arrive sur une page sommaire.html en français, pour qu’il rebascule ensuite sur la langue qu’il désire. Autant le mettre tout de suite dans de bonnes conditions et respecter le choix de langue de son navigateur.

Dans Firefox, par exemple, cela se règle dans les préférences du navigateur, dans l’onglet Général/Langues/Choix de langue préférée pour l’affichage des pages.

Sinon cela se fait par défaut lors de l’installation des navigateurs en fonction de la langue du système d’exploitation et de la langue du navigateur.

Mise en oeuvre

On va court-circuiter la page sommaire.html en s’en servant pour les redirections. Nous allons aussi faire passer les cookies de langues, car nous n’utilisons pas dans cette méthode le basculement des langues par l’intermédiaire du [(#MENU_LANG)].

L’intérêt de mettre en place ces cookies, c’est de par exemple d’afficher le plan.html ou les résultats de la recherche.html dans la bonne langue. Cela nous évitera de devoir faire passer les paramètres de langue dans les url, en dehors des rubriques secteurs où les langues sont définies. Par exemple :

<a href="[(#URL_PAGE{plan}|parametre_url{lang,#ENV{lang}})]">
<:plan:></a>

Pour ce qui est des rubriques les cookies en effet ne sont pas indispensables ici puisque nous ne sommes pas dans le cadre d’un site multilingue unisecteur. Chaque secteur (rubrique à la racine) est associé à une langue.

Dans la page sommaire.html

Explications

Si la langue préférée est le français, on renvoie vers la rubrique secteur id=1.

Si la langue préférée est l’anglais, on renvoie vers la rubrique secteur id= 2.

Si aucune de ses deux langues n’est sélectionnée, on renvoie sur la langue du site par défaut.

La notation #URL_RUBRIQUE{1} nous évite de devoir mettre l’url en dur, et de devoir spécifier l’id rubrique par une boucle.

Comme expliqué plus haut les cookies de langues sont passés.

Ensuite, si l’on veut permettre au visiteur de basculer vers une autre langue lors de sa visite, on peut dans un inclure sur les squelettes mettre par exemple :

<INCLURE{fond=inc-nav-haut}{lang}>

et dans inc-nav-haut.html :

A la place des balises multi, on peut aussi utiliser des chaînes de langue.

Le plugin langue_prefere de Nicolas Hoizey pour SPIP 1.9.2 et au-delà

Je viens par ailleurs de découvrir sur la zone un plugin, qui se révèle être en fait beaucoup plus complet et intéressant que la méthode proposée ici.
Il s’agit du plugin langue_preferee de Nicolas Hozey. Il est encore en phase de test et il se trouve sur la zone.

Il va sans dire que si vous êtes en SPIP 1.9.2 et au-delà, vous aurez tout autant intérerêt à utiliser le plugin qui s’avère plus complet. Il vous faudra seulement mettre, après activation du plugin, la balise suivante dans votre squelette sommaire.html : #LANGUE_PREFEREE_REDIRECTION

Il sera possible de laisser l’internaute choisir sa langue différente de celle de son navigateur, en la précisant en paramètre d’appel du sommaire, avec :

[(#URL_PAGE{sommaire}|parametre_url{lang,'en'})]

Ce choix sera alors stocké dans un cookie pour une utilisation ultérieure prioritaire sur la configuration du navigateur.
L’auteur du plugin a aussi prévu la balise #LANGUE_PREFEREE_LIEN_EFFACE_COOKIE pour proposer un lien de suppression du cookie.

Vous trouverez plus de détails dans le fichier plugin.xml du plugin

P.-S.

Merci à Fil et à Gilles Vincent et à Nicolas Hoizey.

7 Messages de forum

  • Choix du secteur par langue 3 avril 2007 13:44, par Nicolas Hoizey

    Mon plugin est maintenant téléchargeable simplement : langue_preferee.zip

    • Choix du secteur par langue 12 juin 2007 18:47, par Pierre

      Un petit bug dans le plugin me semble-t-il, enfin, plus une erreur de doc :

      Le texte dans le fichier .xml dit :

      "Utilisez la balise #LANGUE_PREFEREE_REDIRECTION dans sommaire.html, à l’exclusion de tout autre code, pour que l’internaute soit redirigé ..."

      A mon avis la balise est plutôt :

      #LANGUE_PREFEREE_SECTEUR_REDIRECTION

      En tout cas, celle-là marche, pas l’autre, et cela me semble cohérent avec le plugin.

      • Choix du secteur par langue 26 juin 2007 14:55, par Manurapide

        Je confirme les dires de Pierre

        #LANGUE_PREFEREE_REDIRECTION ne fonctionne pas...

        #LANGUE_PREFEREE_SECTEUR_REDIRECTION fonctionne...

        Fauudrait corriger dans l’article (qui est d’ailleurs bien sympa et utile) :)

        Kenavo

      • Erreur 13 septembre 2007 14:50, par rainer

        Bonjour, je viens de mettre la balise

        #LANGUE_PREFEREE_SECTEUR_REDIRECTION, mais je n’optiens que l’erreur suivant.

        call to undefined function generer_url_rubrique()

        Que faire ?

        Rainer

  • Choix du secteur par langue 25 juillet 2007 18:40, par Jean

    Merci pour ces infos précieuses.

    Voir en ligne : Merci pour les infos

  • Choix du secteur par langue 20 novembre 2007 23:48, par O.D

    j’ai 2 question

    - où doit on mettre exactement (dans sommaire.html) la balise #LANGUE_PREFEREE_REDIRECTION

    - est ce ke ca marche avec un squelette sarka_spip 2.0.2

    merci je suis complement bloqué

  • Choix du secteur par langue 1er décembre 2007 15:01, par klint

    Merci pour le plugin, ça marche nickel

    Voir en ligne : musculation