Plugin « Langue préférée par l’internaute »

Cet article explique comment fonctionne le plugin « Langue préférée par l’internaute » (langue_preferee) et comment le mettre dans un site multilingue existant.

Introduction

Cet article propose une solution simple et élégante pour diriger l’internaute dans le secteur de sa langue en fonction des préférences de son navigateur préféré.
Cet article traite aussi de la mise en œuvre de l’extension dans les squelettes de votre site.

Pré-requis

Cet article suppose que vous ayez déjà un site multilingue dont chaque secteur [1] correspond à une langue de votre site.
Si vous n’êtes pas familier avec ce concept, nous vous conseillons de lire les articles suivants :

  1. Réaliser un site multilingue
  2. Internationaliser les squelettes

Environnement

  • Un site sous SPIP :)
  • Site multilingue déjà configuré
  • Le plugin « langue_preferee » installé

Configuration

Pour faire simple, cette extension Spip ne comporte aucune interface d’administration. Donc rien à faire de ce côté là.

Intégration

Utilisez la balise #LANGUE_PREFEREE_SECTEUR_REDIRECTION dans sommaire.html, à l’exclusion de tout autre code, pour que l’internaute soit redirigé automatiquement vers le secteur qu’il est le plus susceptible de comprendre, selon la configuration de langue de son navigateur. Si aucune langue disponible n’est compatible avec les choix configurés dans le navigateur, la langue par défaut du site est choisie. Si cette langue n’est utilisée par aucun secteur (!!!), le premier secteur trouvé est choisi.

Il est possible de filtrer le ou les secteurs pour ne pas rediriger vers un secteur non souhaité. Pour cela mettez la liste des secteurs non souhaités séparés par des virgules en paramètre de #LANGUE_PREFEREE_SECTEUR_REDIRECTION, par exemple : #LANGUE_PREFEREE_SECTEUR_REDIRECTION{"3,12"}, la balise ne pourra rediriger ni vers le secteur 3, ni vers le 12.

Il est possible de laisser l’internaute choisir sa langue préférée, différente de celle configurée dans son navigateur, en la précisant en paramètre d’appel du sommaire, avec / ?lang=fr par exemple pour le français. Ce choix est alors stocké dans un cookie pour utilisation ultérieure prioritaire sur la configuration du navigateur. La balise #LANGUE_PREFEREE_LIEN_EFFACE_COOKIE permet de proposer un lien de suppression de ce cookie. #LANGUE_PREFEREE_LIEN_EFFACE_COOKIE{mon message personnalise} permet de remplacer le message proposé par défaut.

Configurer votre navigateur

Dans Firefox, ouvrez le panneau de configuration et affichez la fenêtre des langues comme montré ci-dessous.

Interface de configuration des langues dans Firefox 3.0

Plus une langue est haute dans la liste, plus elle est prioritaire. Dans notre exemple, le français est prioritaire face à l’anglais.

Démonstration

La démonstration est des plus simple. Configurez votre navigateur comme montré ci-dessus. Puis rendez-vous sur www.menfin.net (site en panne - octobre 2015) [2]. Notez que l’adresse demandée est « / ». En fonction du paramétrage de votre navigateur, vous arriverez soit sur la rubrique française (langue par défaut), soit sur la page anglaise, si votre choix de configuration est la langue de Shakespeare. L’adresse finale dans votre navigateur n’est plus « / » mais le nom de la rubrique demandée.

Téléchargement

La dernière version de ce plugin est disponible sur spip-zone.

Usage avancé

Le plugin croise les langues de l’internaute (par ex. ja, de) et celles du site (par ex. fr, en).
Si aucune langue commune n’est trouvée, on redirige vers le secteur de langue par défaut du site.
Il est toutefois possible d’indiquer une autre valeur en définissant la constante _LANGUE_PREFERE_DEFAUT dans mes_options.php

define('_LANGUE_PREFEREE_DEFAUT', 'en');

Notes

[1Un secteur est une rubrique de 1erniveau, donc attachée à la racine de votre site.

[2Je prends l’exemple de mon propre site qui utilise ce plugin. Choix purement arbitraire, j’en conviens.

Discussion

17 discussions

  • Bonjour,
    j’ai créé deux secteurs
    -  un en anglais : en
    -  un en français : fr
    chacun contient un article

    http://www.monsite.com?{{lang=en ou http://www.monsite.com?{{lang=fr
    me renvoient tous les deux à la page contenue dans fr
    Avez-vous une idée de ce qui ne va pas ?
    Merci
    Cordialement

    Répondre à ce message

  • tagada83

    Bonjour, et merci pour ce plugin très utile.
    Je n’arrive pas à faire apparaître le lien de suppression de cookie #LANGUE_PREFEREE_LIEN_EFFACE_COOKIE sur un Spip 3.0.16. J’aurais aimé le mettre en pied de page, pour le proposer partout dans le site. Y a t-il une condition à son apparition ? Ça parait pourtant tout bête...

    Répondre à ce message

  • Quelqu’un aurait-il une idée sur la manière de mettre en oeuvre cette fonctionnalité avec un Zpip ?

    Répondre à ce message

  • Testé et approuvé. Merci.

    Je traite la page d’accueil dans rubrique.html en appelant son squelette par un inclure dans la boucle rubrique si on est à la racine, sinon j’affiche le contenu habituel du squelette rubrique.

    Répondre à ce message

  • Bonjour et merci pour ce plugin fort pratique, je suis cependant un poil déçu de sa rapidité en l’état, et je voulais savoir s’il y aurais des solutions pour améliorer tout ça ?

    Car même avec le cache activé cette page n’est pas mise en cache, et depuis SPIP 3 (lui aussi plutôt lent en ce moment, surtout dans l’interface d’admin) ceci est encore plus problématique car parfois on peux avoir à attendre 3secondes que la redirection se fasse.

    Il y aurait-il une possibilité d’écrire automatiquement quelque chose dans le fichier .htaccess pour accélérer cette redirection ? (et ainsi éviter un calcul de la page de spip que je suspecte d’être en cause ici) ? Ou une autre technique pour améliorer tout ça ?

    Un grand merci en tout cas !

    Répondre à ce message

  • 2

    Bonjour,

    Une question au sujet du SEO.

    Ne serait-il pas mieux de rajouter dans balise/langue_preferee_secteur_redicerction.php à la ligne 115

    header("HTTP/1.1 301 Moved Permanently");

    avant
    header('Location: '.$url_rubrique);

    vu que google n’aime pas trop les renvoi 302 ?

    Rainer

    Répondre à ce message

  • 1

    Bonjour,

    Juste pour vous dire que Langue préférée fonctionne sur SPIP 3.0.1.

    Répondre à ce message

  • Bonjour,

    J’utilise le plugin qui fonctionne très bien.
    Seulement, je viens d’opter pour les url propres2. Pour tous les articles et toutes les rubriques du site, l’url est bien celle attendue.
    Cependant, pour les 2 secteurs (mes 2 langues), j’ai comme urls :
    omsp.org/-rubrique1-.html
    et
    omsp.org/-rubrique2-.html

    au lieu de
    omsp.org/-fr-.html
    et
    omsp.org/-en-.html

    J’utilise SPIP 2.1.12

    Merci,
    Franck

    Répondre à ce message

  • Le Houerf

    Bonjour,

    Juste un petit message pour dire que les liens sur les articles 2124 et 2128 de spip.net sont cassés (erreur 404) et que le lien sur www.menfin.net n’aboutit pas non plus.

    À bientôt.

    Répondre à ce message

  • 5

    Bonjour,

    À quand Langue_prerefee pour SPIP 2.1.xx ?

    Merci

    • Qu’est-ce qui ne fonctionne pas en 2.1 ?

    • Je reçois ce message lorsque j’active le plugin :

      « Impossible d’activer le plugin ../plugins/auto/langue_preferee

      Nécessite SPIP en version [1.9.2 ;2.0.99] minimum. »

      Je suis en SPIP. 2.1.11. Depuis la MAJ de mon site de 2.1.10 à 2.1.11 le plugin me renvoie cette erreur. J’ai réinstallé 2 fois le plugin pour être sure.

      Y a-t-il des incompatibilités connues avec d’autres plugins ?

      Merci

    • Est-ce que tu peux modifier le contenu de la balise <necessite> de plugin.xml et voir si l’activation fonctionne ?

    • Bonjour,

      J’ai modifié la balise par <necessite id="SPIP" version="[1.9.2;2.1.11]" /> et ça fonctionne !

      Merci !

    • OK, j’ai corrigé dans le code, merci !

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom