spipzine

Accueil > 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


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

Messages