Comment organiser un site bilingue
Un site bilingue peut s'afficher dans une langue au choix ou automatiquement dans la langue du navigateur. Le second choix permet un accès facilité au visiteur mais la page d'accueil aura un PageRank moindre.
Il faut cependant savoir que du point de vue du référencement il est préférable d'avoir des points d'entrées différents pour chaque langue.
Comment afficher le site dans la langue du navigateur avec PHP
Ce code a été testé avec
les principaux navigateurs: Internet Explorer, Firefox, Opéra, Safari.
Le fichier est sauvé sous le nom de index.php
Dans l'exemple, la page en français a le nom de fichier index-fr.php
et la page en anglais index-en.php
On peut ajouter autant de langues que l'on veut en suivant le même principe...
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="robots" content="index,follow">
</head>
<?php
$lang = "en";
$serv = $_SERVER[HTTP_ACCEPT_LANGUAGE];
if($serv != false)
{
$temp = explode(",",$serv);
$temp = strtolower(substr($temp[0]),0,2);
if($temp == "fr") $lang="fr";
}
?>
<frameset cols="0,*" row="*" border="0" framespacing="0" >
<frame src="" >
<frame
<?php
echo "src=\"index-$lang.php\"";
?>
border=0 frameborder="no" RESIZE scrolling="YES" noresize >
</frameset>
<noframes>
<body>
Frames requises.
</body>
</noframes>
</html>
Si l'on installe les langues dans des sous-répertoires, par exemple fr, en, etc. on écrira, en se passant des frames:
<?php
$lang="en";
$serv = $_SERVER[HTTP_ACCEPT_LANGUAGE];
if($serv != false)
{
$temp = explode(",",$serv);
$temp = strtolower(substr($temp[0],0,2));
if($temp == "fr") $lang="fr";
}
header("HTTP/1.1 302 Redirect");
header("location:http://www.scriptol.fr/$lang/");
?>
Les noms des pages
La page d'accueil dans une langue donnée ne porte pas nécessairement
le nom index, on peut lui donner un nom significatif comme conception.php pour la page française et design.php pour la page anglaise,
et c'est une bonne chose pour le référencement.
Dans ce cas on modifiera les lignes suivantes dans le code, en remplaçant
les mots de l'exemple par les mots-clés choisis selon le thème
de votre site:
$lang = "design"; if($temp == "fr") $lang="conception"; echo "src=\"$lang.php\"";
Lorsque vous référencez le site, vous donnerez pour adresses: http://www.scriptol.fr/conception.php ou http://www.scriptol.fr/design.php (remplacez scriptol.fr par le nom de domaine de votre site et remplacez les noms des pages).
Redirection d'accueil conditionnelle
Pour éviter la perte de PR, une solution consiste à
mettre la page d'une langue donnée comme page d'accueil du site, par
exemple la page d'accueil en français se nommerait index.php, et elle
contiendrait le code PHP qui redirige les visiteurs des autres langues.
L'inconvénient, si cette page est importante, ce qui est souvent le
cas d'une page d'accueil, est le chargement de deux pages quand on entre sur
le site, pour les visiteurs des autres langues.
La redirection selon l'IP
Certains services, dont ceux de Google lui-même, identifient l'origine de l'internaute à partir de son adresse IP, et le redirigent automatiquement (et sans lui laisser le choix) sur le site correspondant à sa langue.
Pour en savoir plus sur l'identification de l'origine d'un utilisateur, voir l'article Comment connaître le pays d'une adresse IP.
Site bilingue et moteurs de recherche
Le code de redirection automatique selon le navigateur n'a pas d'incidence négative sur
le PageRank des pages autres que la page d'accueil, contrairement aux solutions
utilisant la fonction PHP "header" sur laquelle s'arrêtent
les robots des moteurs de recherche.
Ce n'est pas une solution parfaite, on perd un point de PR sur la page d'accueil,
le problème semble inhérent au site bilingue, toutes les solutions
ont des inconvénients.
Ce que recommande Google
Le staff en charge de l'algorithme et des questions de l'optimisation des sites s'est exprimé dans une table ronde avec les webmasters en octobre 2008, dont l'essentiel des questions est repris dans l'article Réponses de Google aux webmasters.
Il est préférable pour un site anglais et français par exemple, du point de vue des moteurs de recherche:
- Soit de créer un site en .com et l'autre en .fr
- Soit de créer des sous-domaines en et fr.
- Soit de créer des sous-répertoires en et fr.
La troisième solution est la meilleure car un site plus important vaut mieux que deux sites plus petits. Dans ce cas la page d'accueil devrait d'une part avoir un lien vers chaque langue. Optionnellement, l'utilisateur dont le navigateur est dans la langue A, qui entre dans un répertoire de la langue B pourrait dynamiquement être redirigé sur la langue A.
Téléchargement
Le code de redirection selon la langue du navigateur est disponible dans un fichier zip.