Je ne dois pas choisir ma langue !

Pour les non-belges qui me lisent, il faut savoir que la Belgique est un pays compliqué où on parle trois langues : le français, le néerlandais et, dans une moindre de mesure, l’allemand.

La plupart du temps, les sites belges sont donc proposés en plusieurs langues (les besoins en traductions bouffent d’ailleurs pas mal de budget ce qui donne au final un site moins bien que s’il avait été en une langue… ce qui explique sans doute pourquoi la Belgique est en retard sur le Web… mais c’est un autre débat).

Bref, même si cela reste encore une pratique courante sur le Web, s’il y a bien quelque chose que je trouve qu’on pourrait facilement éviter, c’est l’utilisation des splash pages de choix de langue !

Le débat est assez intense à ce sujet et si vous ne voyez toujours pas de quoi je veux parler, allez jeter un coup d’oeil à ces quelques exemples :

Ces pages intermédiaires de choix de langues ne sont pas conseillées d’un point de vue référencement car elles sont considérées de façon prioritaire par les moteurs de recherche ce qui est un peu du gâchis car vous ne pouvez y mettre aucun contenu (forcément, dans quelle langue mettriez vous ce contenu ?)

En plus, c’est un peu idiot de les utiliser, vu qu’on peut facilement les éviter en quelques lignes de code…

En effet, il est facile de détecter la langue du navigateur et d’orienter le visiteur vers sa langue de façon automatique et invisible.

Voilà ce que cela pourrait donner en PHP :

http://pastie.org/699865.js

<?php

$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);

header('HTTP/1.1 301 Moved Permanently');
header('Location: /index_'.$lang.'.php');

Évidemment, si la langue détectée est l’espagnol et que notre site n’existe qu’en français et en anglais, nous avons un problème… Il faut donc établir une langue par défaut de façon arbitraire (par exemple : si les clients de votre entreprise sont majoritairement francophones, vous pouvez opter pour le français) et rediriger vers cette langue par défaut au cas où nous détecterions une langue qui n’existe pas sur le site :

http://pastie.org/699877.js

<?php

$langs = array('fr','en','nl'); // the first item is the default language

$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);

if (!in_array($lang, $langs))
	$lang = $langs[0];

header('HTTP/1.1 301 Moved Permanently');
header('Location: /index_'.$lang.'.php');

C’est déjà mieux…

Bien sûr, il faut pouvoir offrir la possibilité au visiteur de changer de langue à tout moment sur le site et enregistrer cette valeur dans un cookie. Si le cookie est détecté, il prend le dessus par rapport à la langue du navigateur :

http://pastie.org/699888.js

<?php

$langs = array('fr','en','nl'); // the first item is the default language

if (isset($_COOKIE['lang']) && in_array($_COOKIE['lang'], $langs)) {
	$lang = $_COOKIE['lang'];
}
else {
	$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);

	if (!in_array($lang, $langs))
		$lang = $langs[0];
}

header('HTTP/1.1 301 Moved Permanently');
header('Location: /index_'.$lang.'.php');

Pour encore améliorer la chose, on pourrait établir que la langue par défaut est la langue la plus utilisée sur le site. Il faut pour cela pouvoir surveiller le comportement des visiteurs et faire les comptes pour déterminer la langue dominante sur le site.

A vous de jouer !

19 Comments

  1. Mich's avatar Mich says:

    Ma blogroll, lorsque je l’entretenais de manière manuelle, était divisée par langue. En fonction de l’endroit d’où les gens venaient, je savais qu’ils venaient d’un site néerlandophone ou francophone. Si je n’avais pas déterminé la langue en fonction de ce que toi tu explique, je choisissais la langue comme ca.

    Like

  2. djdmsr's avatar djdmsr says:

    J’ajouterai que ceci s’appelle la “négociation de contenu” via http header et que j’ai appris à faire ça ici: http://www.alsacreations.com/article/lire/611-Negociation-de-contenu.html (Il a fallu que j’optimise le code…)

    Pour un référencement optimum, j’ajouterai également qu’il faut fournir toutes les langues dispo dans le head via les balises link

    etc…
    Ne pas oublier aussi les attributs hreflang (voir aussi les attributs lang si ces liens sont dans la langue en question) sur les liens de traductions dans la page, il n’est pas inutile aussi d’ajouter dans ce cas le rel=”alternate”

    Like

  3. djdmsr's avatar djdmsr says:

    désolé les exemples de codes html pour les balises link ne sont pas passés…

    Like

  4. Bartdude's avatar Bartdude says:

    Les entreprises que tu cites font certainement très attention à ne heurter aucune susceptibilité, qu’elle soit francophone ou néerlandophone, car peu importe de quel côté de la frontière linguistique elles ont le plus de clients, de chaque côté ca fait un paquet de gens.
    Or je sais d’expérience que un choix par défaut erroné, même s’il est techiquement logique, peut entraîner une frustration chez certains visiteurs. Et force est de constater que dans certains cas et pour des raisons échappant au contrôle du developpeur, le choix “par défaut” n’est simplement pas bon.
    Tu ne veux pas choisir ta langue, certes, mais certains sont moins ouverts et ne veulent surtout pas qu’on fasse le choix pour eux, à fortiori s’il est erroné. Dès lors je pense que ces entreprises font cela non pas par ignorance ou pour le plaisir d’être moins bien référencées, mais simplement pour être sur de ne heurter personne, y compris un gros client ou un gros prospect.

    Like

  5. Vinch's avatar Vinch says:

    Ouaip, même si le cas par défaut ne devrait en principe pas être appelé très souvent, vu qu’on se base sur la langue du navigateur en premier lieu. Et si frustration il y a, elle n’aura lieu qu’une seule fois, vu qu’on garde un cookie avec la langue choisie…

    Like

  6. Marin's avatar Marin says:

    Perso j’ai mes settings régionaux en en_us et c’est mon choix.

    Me forcer une des deux (3) langues nationales ne me plait pas du tout (à la Google).

    Quid des choix de langue pour les personnes qui surfent sur des postes ou plusieurs profils surfent (postes partagés au bureau, cybercafés, netcorner etc…). Les settings du browser/système ne reflètent pas toujours les choix de l’utilisateurs. Et pour ne pas frustrer une partie de la population (surtout chez nous en fait) une splash page peut-etre justifiée (elle peut meme servir a faire du prefetch de cache – mais ca c’est un autre sujet)

    Like

  7. Vinch's avatar Vinch says:

    Mouais, il faudrait sans doute faire un sondage car moi, une splash page à chaque visite, ça me frustre plus que de devoir changer de langue UNE SEULE FOIS dans ma vie (ou plutôt dans la vie de mon cookie).

    Si le détecteur automatique se plante, il suffit de changer de langue une fois et le tour est joué. Dans les deux cas (splash page ou pas), on n’a qu’un seul click à faire…

    Like

  8. Jon's avatar Jon says:

    Je suis plus mitigé sur l’impact SEO perso…

    Ok 1 page en 1 seule langue sera beaucoup mieux mais je pense qu’une page avec un peu d’info en 3 langues (avec titres, descriptions et liens) avec dans le code des meta description différentes avec un attribut langue FR – NL – EN ça peut passer correctement.

    Google va référencer les infos séparément ce qui fait que les résultats affiché dans Google seront correct (sauf pour le titre qui lui sera le même dans les 3 langues)…

    Et encore faudrait tester pour voir si Google associe 1 titre H1 à la description qui le suit…

    Et dès le premier choix le cookie retient donc good…

    http://www.immoweb.be fait ça bien je trouve… votre avis ?

    Jon

    Like

  9. Biway's avatar Biway says:

    @Jon: La page dont tu parles est un splash (pour utiliser le vocabulaire de ce billet) …

    Like

  10. Bartdude's avatar Bartdude says:

    “Mouais, il faudrait sans doute faire un sondage car moi, une splash page à chaque visite, ça me frustre plus que de devoir changer de langue UNE SEULE FOIS dans ma vie (ou plutôt dans la vie de mon cookie).”

    Entièrement d’accord sur ce point, mais bon là c’est une question de cookie, pas de Splash…

    Like

  11. Antoine's avatar Antoine says:

    Les splash page m’agacent aussi.

    La detection automatique une bonne solution, je me trouve sur la mauvaise langue ? Ok pas de soucis je regarde en haut (droite généralement) après un moyen de changer de langue et voila, le changement est fait pour la durée de vie du cookie (en espérant que cela soit bien configuré).

    Si je navigue avec le paramètre en_US et bien dans ce cas j’assume ! Et si c’est le cas c’est que je ne serait pas frustré d’avoir un contenu dans une autre langue, sinon pour quelle raison le changer hein ?

    Pour le référencement cela à peut-être un impact, je ne m’y connais pas assé pour m’exprimer à ce sujet mais je dirai que cela devrait avoir un impact.

    Je pense que le plus important à retenir c’est que plus il y a de clics pour avoir une information plus l’internaute est frustré.
    Vu que statistiquement il y a peu de chance de se tromper de langue la solution de détection automatique prime sur la splash.

    Il ne faut surtout pas oublier aussi que les cookies ne sont pas retenus par google et companie. Il faut donc bien distinguer vos langues dans votre et dans vos URL (exemple /fr/page1 /en/page/1)

    Comment font nos amis Suisses, Canadiens … ?

    Like

  12. Ced's avatar Ced says:

    C’est vraiment une très mauvaise idée.

    Exemple :
    Le robot d’un moteur de recherche arrive sur le site. Dans 99% des cas, sa langue détectée sera l’anglais. Il va donc indexer en priorité le contenu en anglais. Les pages en néerlandais en français seront pour lui des sous-pages moins importantes.
    Dans les résultats de recherche sur Google Belgique en français, on aura alors souvent un titre et une description en anglais. Vraiment pas top.

    Une splash page classique permet de repartir uniformément le poids de chaque langue.

    Immoweb, même si c’est un site pourri a fait un gros travail de SEO. Quand on tape Immoweb dans Google Belgique en français, le premier résultat est http://www.immoweb.be/fr/, même plus besoin de passer par la splash page.

    Like

  13. vinch's avatar Vinch says:

    “Il va donc indexer en priorité le contenu en anglais. Les pages en néerlandais en français seront pour lui des sous-pages moins importantes.”

    Je ne remets pas ta parole en question mais tu as des preuves de ça ?

    Je ne pense pas que ce soit une mauvaise idée. Si tes URL sont bien construites avec la langue dedans et la langue spécifiée dans les pages, je ne vois pas en quoi le fait d’avoir une splash page ou pas change quelque chose au schmilblick. Finalement, le changement de langue en haut de page fait exactement le même travail qu’une splash page, Google va passer sur les liens et indexer les pages qui se trouvent derrière. La seule différence sera que la homepage indexée par Google sera une vraie page de contenu et pas une page avec trois liens…

    Like

  14. Ced's avatar Ced says:

    Oui pas de problème, Google va tout indexer. Mais pas avec la même importance. Imagine ça :
    Google arrive sur tonsite.com. Le contenu est en anglais, il l’indexe et lui attribue un pagerank de 5. Il suit des liens présents sur cette page :
    site.com/products,
    site.com/contact,
    site.com/fr
    site.com/nl

    C’est 4 liens auront pour lui la même importance, ils font partie d’un sous-niveau et il leur attribuera un pagerank de 4, inférieur à la page d’accueil. Ce qui fait que l’anglais ressortira en premier dans les résultats de recherche, peu importe la langue choisie par l’utilisateur dans Google.

    Tape loxam dans Google Belgique en français tu verras. (pas de détection de langue ici, juste le nl qui est la langue par défaut).

    Like

  15. vinch's avatar Vinch says:

    Mouais peut-être, mais il y a tellement de paramètres dans l’algorithme qu’on ne peut pas tirer de conclusions d’un ou deux exemples au hasard…

    Je rajoute que l’exemple Immoweb est assez mauvais en fait étant donné qu’ils ne sont même pas foutus de faire une redirection sans les www vers les www (ou l’inverse). Cela porte le joli nom de “duplicate content” et c’est tout ce qu’il y a de plus mauvais pour Google.

    Like

  16. Ced's avatar Ced says:

    Des exemples, il y en a pleins. Tape dell dans Google Belgique en français. Dell België – startpagina !

    Like

  17. Jon's avatar Jon says:

    Sympa ça, merci pour les exemples Ced.

    +1 pour immoweb (affreux) c’est vrai qu’au moins Vlan ne fait pas ça…

    Like

  18. Benja's avatar Benja says:

    Yop Vinch,
    Un petit conseil en passant: appliquer cette technique à http://www.becherry.be car je me souviens que j’avais trouvé ça bizarre d’avoir le site en Anglais par défaut.
    A+!

    Like

  19. Je pense que dans cette histoire il est important de faire plaisir à Google qui mentionne dans ses guideline : ‘To make all of your site’s content more crawlable, avoid automatic redirections based on the user’s perceived language. These redirections could prevent users (and search engines) from viewing all the versions of your site’. Pour plus de détails http://www.referencement-site-montreal.com/news-91-referencement-multilingue-sites-plusieurs-langues.html.
    Il est super ton billet trés instructif.

    Like

Leave a reply to Marin Cancel reply