Rediriger vos visiteurs en fonction des préférences de langues du navigateur

Vous développez un blog en plusieurs langues et la seule solution que vous proposez aujourd’hui à vos visiteurs consiste à cliquer sur leur drapeau correspondant ? Innovez en automatisant le processus. Comment ? Via un script à placer dans le fichier .htaccess qui ira chercher les préférences de langue du navigateur pour ensuite mettre en place une redirection via le domaine adéquat. Cette méthode utilisée par la plupart des sites professionnels vous est à présent révélée.


Par simple précaution, faites une sauvegarde préalable du fichier .htaccess que vous pourrez téléverser sur votre serveur FTP en cas de problèmes.

Voici le bout de code nécessaire à placer dans le fichier .htaccess, situé à la racine de votre nom de domaine :

#Si navigateur défini sur anglais 'en'
#Insensible à la casse ([NC])
RewriteCond %{HTTP:Accept-Language} ^en [NC]
#Rediriger l'utilisateur vers /en/
#Redirection de type 301 (permanente)
RewriteRule ^$ /en/ [L,R=301]

Si vous prenez en charge plusieurs langues, répétez tout simplement la procédure pour les autres préfixes de langue. Prenez soin de remplacer 3 fois en par un tout autre préfixe (de pour l’allemand, es pour l’espagnol, etc.).

Exemple avec l’allemand (de) :

#Si navigateur défini sur allemand 'de'
#Insensible à la casse ([NC])
RewriteCond %{HTTP:Accept-Language} ^de [NC]
#Rediriger l'utilisateur vers /de/
#Redirection de type 301 (permanente)
RewriteRule ^$ /de/ [L,R=301]

Exemple avec l’espagnol (es) :

#Si navigateur défini sur espagnol 'es'
#Insensible à la casse ([NC])
RewriteCond %{HTTP:Accept-Language} ^es [NC]
#Rediriger l'utilisateur vers /es/
#Redirection de type 301 (permanente)
RewriteRule ^$ /es/ [L,R=301]

Enfin, si vous optez pour une solution de traduction automatisée par Google Translate – ou tout autre service en ligne gratuit, je vous recommande d’utiliser Global Translator pour WordPress, un plugin qui a fait l’objet d’un tutoriel complet sur Protuts.net, intitulé Créer un blog WordPress multilingue à l’aide de Global Translator.

Articles relatifs

Ce contenu a été publié le Tutoriels WordPress par Aurélien Denis, et marqué avec . Mettez-le en favori avec son permalien.

A propos Aurélien Denis

Aurélien Denis est le fondateur du projet WordPress Channel proposant tutoriels et podcasts librement téléchargeables. En 2010, il fonde Neticpro, une agence Web spécialisée WordPress. Il est aussi co-fondateur du site Protuts.net (tutoriels PC/Mac/Linux) et community manager pour l’Imagine Cup 2011/2012, une compétition mondiale organisée par Microsoft.

12 réflexions au sujet de « Rediriger vos visiteurs en fonction des préférences de langues du navigateur »

  1. Top mais j’ai du mal avec les redirections automatiques en fonction de la langue du navigateur, le mien est allemand mais je préfère bien sur sauf lorsque je recherche des infos en germain voir les sites en frenchy… Je préfère que le site me donne la possibilité de choisir. Un clic c’est mieux.
    Bonne continuation
    Thierry

  2. Chez moi ça ne fonctionne pas.
    déjà il n’y avait pas de fichier .htaccess, j’ai du en crée un et y mettre le code suivant :
    1. # BEGIN WordPress
    2.
    3. RewriteEngine On
    4. RewriteBase /
    5. RewriteCond %{REQUEST_FILENAME} !-f
    6. RewriteCond %{REQUEST_FILENAME} !-d
    7. RewriteRule . /index.php [L]
    8.
    9. # END WordPress

    Ensuite j’ai rajouté le code mentionné plus haut :

    #Si navigateur défini sur anglais ‘en’
    #Insensible à la casse ([NC])
    RewriteCond %{HTTP:Accept-Language} ^en [NC]
    #Rediriger l’utilisateur vers /en/
    #Redirection de type 301 (permanente)
    RewriteRule ^$ /en/ [L,R=301]

    Mais pas de changement :
    Pourriez-vous m’aider svp?
    Merci

  3. Tu es sûr qu’il n’y avait aucun fichier .htaccess ? Il est caché par défaut…

    WordPress en utilise toujours un normalement. D’ailleurs en quelle version es-tu ?

    L’URL de ta version anglais est invalide… peut-être la source de ton problème.

      • Non je n’ai pas testé sur un autre que firefox. Mon erreur je vais re tester car oui j’ai bien noté qu’il est indiqué que cela fonctionne. Surement que cela vient de mon site mais il y a tellement de chose dedans que pour dire d’où cela vient j’ai encore du boulot. Mais en tous cas merci de m’avoir répondu c’est tellement rare sur les sites lol.
        Je ne désespère pas d’arriver à ce résultat car je note qu’il y a énormément de personnes vivants à l’étranger qui se connectent donc je voudrais leur faciliter la tache.

  4. Bon j’ai trouvé et cela fonctionne mais je n’aime pas du tout lol
    En fait lorsque la page s’ouvre il est avant indiqué
    This page has not been translated yet.
    ect ect
    Ensuite je suis redirigé mais pas comme sur la vidéo puisque j’ai le cadre en haut de traduction. Ce n’est pas très pro mais il doit y avoir un moyen d’enlever ce cadre. Une idée ?
    Merci beaucoup.

  5. Bonjour,
    Je viens de découvrir ce code, ça fonctionne à la perfection, sur tous les navigateurs. Merci :)
    En revanche, comment indiquer que la langue par défaut doit être l’anglais, lorsque la langue du navigateur est différente de celles prises en charge ?

      • Merci pour le conseil au sujet de xili-language, mais finalement comme j’ai déjà pris l’option de faire 2 installations avec 2 BDD, une par langue, je vais utiliser ton code beaucoup plus simple et efficace.
        Avec les archives de consultations je peux voir d’où proviennent majoritairement les internautes et du coup rerouter les quelques langues non francophones vers le répertoire /en. Je ne sais pas si c’est très orthodoxe mais ça aura le mérite de fonctionner.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.

Pour insérer du code, utilisez un service en ligne comme Pastebin ou prenez-soin de convertir celui-ci en HTML.

Les champs obligatoires sont indiqués avec *.

*

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>