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
Messages
1. Choix du secteur par langue, 3 avril 2007, 13:44, par Nicolas Hoizey
Mon plugin est maintenant téléchargeable simplement : langue_preferee.zip
1. 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.
2. 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
3. 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
2. 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
3. Choix du secteur par langue, 20 novembre 2007, 23:48, par O.D
j’ai 2 question
merci je suis complement bloqué
4. Choix du secteur par langue, 1er décembre 2007, 15:01, par klint
Merci pour le plugin, ça marche nickel
Voir en ligne : musculation