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.

20 commentaires

  1. Thierry Benquey

    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. mikesquake

    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. Aurélien Denis auteur de l’article

    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.

  4. KarSess

    Bonjour,
    J’ai testé et cela ne fonctionne pas. J’ai bien modifié mon fichier .htaccess mis le navigateur sur (en) et le site reste en Français.
    Une erreur ?

      1. KarSess

        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.

        1. KarSess

          Je viens de tester avec IE et a la fin de mon adresse dans la barre d’adresse il y a en-US comme dans mon fichier htaccess. Le problème cela me met une page 404

  5. KarSess

    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.

  6. agathe

    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 ?

      1. agathe

        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.

  7. oim

    bonjour, cette discussion date un peu donc je suis peut-être à côté de la plaque, mais je trouvais la solution simple et clean, simplement cela ne fonctionne pas avec ma version du fichier htaccess modifiée pour WP multisite…
    j’ai essayé de placer les lignes de codes fournies, mais rien à faire.
    à moins que ça puisse ce ne soit parce que je suis en local ??

    sinon, il y à peut-être une autre solution ?
    merci d’avance

      1. tikrampouezh

        Bonjour
        J’utilise WPML en multisite, rien à dire sur son très bon fonctionnement seulement voilà, oui WPML propose une redirection en fonction de la langue du navigateur MAIS en Javascript et ça… M. Google il aime pas du tout :
         » Évitez les redirections automatiques basées sur la détection de la langue de l’internaute. En effet, celles-ci risquent d’empêcher les internautes (et les moteurs de recherche) de consulter toutes les versions de votre site.  »
        https://support.google.com/webmasters/answer/182192?hl=fr

        C’est pour cette raison que je cherche une solution  » serveur  » (htaccess ou php) mais en tout cas qui ne s’exécute pas côté client… et je cherche toujours…

  8. SMIT

    Bonjour, merci pour votre merveilleuse solution, toutefois avez vous une méthode pour que l’une des langues soit définie comme langue par défaut? (si la langue d’un visiteur n’est pas dans la liste de celles qui ont été prévu)

Laisser un commentaire

Thèmes & Plugins
Premium By WP Channel

WP Alacarte propose des produits et services de qualité
made in France pour la plateforme WordPress.

Tout est prêt pour créer votre site à la carte !

  • Thèmes et extensions premium
  • Facilité d’utilisation garantie
  • Temps de chargement optimisé
  • Personnalisation avancée
Découvrir

Rejoignez la communauté WordPress !

Faites partie de l’aventure en devenant membre d’une association WordPress. Conférences, ateliers, BarCamp, WordCamp… Venez
partager votre passion pour WordPress !

Aurélien DENIS,
président des associations WordPress Francophone et WPMX