site multilangues

Nouveau WRInaute
j'ai un site, en français, en php actuellement referencé dans google. Je voudrais faire une version anglaise et une française.

Mais voilà j'ai peur qu'au passage à la version anglaise/française j'ai des gros problèmes de référencement. Alors j'anticipe en me renseignant.

Pour cela, j'aimerais que le index.php :
- essayer de géolocaliser le visiteur et bascule automatiquement sur la bonne langue
- en cas d'échec propose le choix en français ou anglais
- une fois le choix effectué, la langue est stocké dans un cookie
- si le navigateur ne supporte pas les cookies alors c'est l'anglais qui est choisit par defaut

Comment google va pouvoir à la fois référencer correctement le côté anglais et le côté français ? N'y aurait il pas moyen avec un robot "d'expliquer" la situation à google (et aux autres) ?

Merci de votre aide pour que je choisisse la bonne solution technique.
 
WRInaute passionné
Salut,
Si tu as php, tu peux via les entetes http connaitre la langue du navigateur et afficher la bonne langue. ne pas oublier de mettre une langue par défaut pour google qui n'en a pas.
Ensuite, pour que google trouve tes pages dans toutes les langues, il faut que des liens inclus la langue et qu'elle soit passé de page en page via l'url.
Par exemple /en/index.php ou index.php?lang=en

François
 
Nouveau WRInaute
- oui j'ai PHP, t'aurais un exemple de code pour trouver la langue à partir de l'entête ?

- mon problème est que google s'intéresse beaucoup plus à /index.php que /en/index.php ou /fr/index.php. La première fois j'avais fais une indirection de la racine vers /dynamic.index.php et j'étais pas referencé. J'ai du m'arrangé pour que le /index.php affiche des choses pertinentes dès le début sans indirection. C'est pour ça que je doute...

- se trimballer le lang=xx sur tout les liens c'est monstrueux à faire. Moi j'ai un système de template localisé qui en fonction d'une valeur choisir un fichier HTML ou un autre automatiquement. J'espère m'en sortir comme ça mais il me faut un cookie pour fixer la langue à la première arrivée sur le site.

Stéphane
 
WRInaute occasionnel
chepiok a dit:
- oui j'ai PHP, t'aurais un exemple de code pour trouver la langue à partir de l'entête ?

Salut Stephane,

Voici un exemple de code a utiliser pour trouver la langue du navigateur automatiquement:
Code:
<script LANGUAGE="JavaScript">
<!--
if (top==self)
{
	if (navigator.appName == 'Netscape')
    		var language= navigator.language;
	else
    		var language= navigator.browserLanguage;

	bl = language.substring(0,2);

	//document.write("<b>Browser language is " + bl)

	if (bl == "de" || bl == "de-at" || bl == "de-li" || bl == "de-lu" || 
		bl == "de-ch")
	{
		//this.location = "default.php?lang=de"
		this.location = "http://www.easyexpat.com/index_de.htm"

	}
	else if (bl == "es" || bl == "es-ar" || bl == "es-bo" || bl == "es-cl" || 
			bl == "es-co" || bl == "es-cr" || bl == "es-do" || bl == "es-ec" || 
			bl == "es-sv" || bl == "es-gt" || bl == "es-hn" || bl == "es-mx" || 
			bl == "es-ni" || bl == "es-pa" || bl == "es-py" || bl == "es-pe" || 
			bl == "es-pr" || bl == "es-uy" || bl == "es-ve" || bl == "ca")
	{
		//this.location = "default.php?lang=es"
		this.location = "http://www.easyexpat.com/index_es.htm"

	}
	else if (bl == "fr" || bl == "fr-be" || bl == "fr-ca" || bl == "fr-lu" ||
			bl == "fr-mc" || bl == "fr-ch")
	{
		//this.location = "default.php?lang=fr"
		this.location = "http://www.easyexpat.com/index_fr.htm"

	}
	else if (bl == "it" || bl == "it-ch")
	{
		//this.location = "default.php?lang=it"
		this.location = "http://www.easyexpat.com/index_it.htm"

	}
}
//-->
</script>
:arrow: Attention n'oublie pas que Google ne lit pas le javascript, donc prevoit de mettre des liens en dur dans ta page. Par ailleurs certains internautes peuvent avoir desactive javascript, mefiance aussi il faut qu'ils puissent indiquer une langue.

En effet Google va desavantager tes pages qui semblent ajouter un sous repertoir de type .../en/index.php (en gros tu vas au minimum perdre 1 point de PR). C'est pour cela qu'il vaut mieux utiliser l'url rewriting pour reformater tes URL.
Tu pourras par exemple transformer un index.php?lang=en en index_en.htm. Tu trouveras des exemples sur le site EasyExpat

chepiok a dit:
se trimballer le lang=xx sur tout les liens c'est monstrueux à faire. Moi j'ai un système de template localisé qui en fonction d'une valeur choisir un fichier HTML ou un autre automatiquement. J'espère m'en sortir comme ça mais il me faut un cookie pour fixer la langue à la première arrivée sur le site.

Mais non mais non, ce n'est pas monstrueux a faire :lol: Et pour l'utilisation des cookies n'oublie pas que Google n'en a pas et que certains Internautes peuvent les refuser.
 
WRInaute discret
Plus simplement, tu récupère en PHP la varible HTTP_ACCEPT_LANGUAGE, tu tronque la pour garder que les 2 premières lettres.
Tu fais un petit "if" pour rediriger.

Ca tient en 5 lignes de code.
 
Nouveau WRInaute
Bonjour

Je reviens sur le code donné par EasyExpat

Je suis en train de le tester et ça me renvoie bien sur l'accueil FR avec mon navigateur en français.

Par contre comment je fais pour passer mon navigateur en anglais pour voir si ça me redirige sur l'accueil anglais?

Merci!
 
WRInaute impliqué
je te conseille de prendre comme navigateur Mozilla firefox qui supporte un paquet de plugin dont celui de changer la langue "à la volée"
 
WRInaute passionné
chepiok a dit:
- oui j'ai PHP, t'aurais un exemple de code pour trouver la langue à partir de l'entête ?

- mon problème est que google s'intéresse beaucoup plus à /index.php que /en/index.php ou /fr/index.php. La première fois j'avais fais une indirection de la racine vers /dynamic.index.php et j'étais pas referencé. J'ai du m'arrangé pour que le /index.php affiche des choses pertinentes dès le début sans indirection. C'est pour ça que je doute...

- se trimballer le lang=xx sur tout les liens c'est monstrueux à faire. Moi j'ai un système de template localisé qui en fonction d'une valeur choisir un fichier HTML ou un autre automatiquement. J'espère m'en sortir comme ça mais il me faut un cookie pour fixer la langue à la première arrivée sur le site.

Stéphane


Code:
$lang_nav = substr(strtolower($HTTP_ACCEPT_LANGUAGE), 0, 2);

Te donne la langue du navigateur (en, fr,sv)


Passer par un cookies ne marchera pas pour google, il faut qu'il ait les langues en dur dans un lien.

Pour changer la langue du navigateur : Outils/preference/langue (bon, je traduit du suédois donc ca peut varier)

François
 
Nouveau WRInaute
:(

j'ai beau changer la langue dans IE et aller sur easy expat, j'arrive toujours sur la page en français

j'ai essayé de télécharger firefox, il veut pas s'installer

mauvaise journée

:cry:
 
Nouveau WRInaute
J'ai réussi à charger firefox (super le navigateur!) et l'extension pour changer la langue à la volée

ça marche avec google qui me redirige correctement selon la langue mais pas chez easyexpat

Cyril, tu es sur qu'il marche ton javascript de redirection selon la langue???
 
WRInaute occasionnel
Positif! :)
J'ai Netscape en francais et IE en anglais chez moi. Par ailleurs lorsque j'etais en Italie ca m'a ouvert l'index en Italien.

Ceci dit si c'etait a refaire j'essayerai plutot $HTTP_ACCEPT_LANGUAGE pour utiliser javascript le moins possible (en effet ca varie pas mal selon les navigateurs...).

A+

Cyril
 
Nouveau WRInaute
ça marche

mais il a fallut que je telecharge mon navigateur en anglais pq changer la langue dans les options ne fait rien sinon
 
Nouveau WRInaute
lang=xxx

Je ne trouve pas ça inutile car avec une détection auto de la langue, on arrive sur la page index.php (avec le PR le plus fort)
Avec un choix de lang index.php?lang=fr ou index.php?lang=gb

Ca fait trois pages indexées pour deux pages différentes (très intéressant pour les gros sites (OS commerce par ex)
 
Nouveau WRInaute
Je comprend pas tout avec la solution javascript ou $HTTP_ACCEPT_LANGUAGE, google va arriver sur le site en était probablement en anglais et ne va donc voir que l'anglais. je vois pas dans ces solutions le moyen pour que google attrape le franaçais ET l'anglais.

autre chose, pour propager une adresse xxx.php?lang=fr sur tous les liens du site je vois pas bien comment faire simple. Faut quand même pas éditer à la main les différents endroits où il y a des liens ? d'un autre côté je peut consulter $HTTP_ACCEPT_LANGUAGE sur chaque page et choisir le bon template en fonction.
 
WRInaute occasionnel
chepiok a dit:
Je comprend pas tout avec la solution javascript ou $HTTP_ACCEPT_LANGUAGE, google va arriver sur le site en était probablement en anglais et ne va donc voir que l'anglais. je vois pas dans ces solutions le moyen pour que google attrape le franaçais ET l'anglais.
Que neni! :)
Il suffit que dans ta page tu fasses un lien avec les autres langues et Google suivra les liens pour arriver sur les autres pages. Regarde comment c'est fait sur EasyExpat.

chepiok a dit:
autre chose, pour propager une adresse xxx.php?lang=fr sur tous les liens du site je vois pas bien comment faire simple. Faut quand même pas éditer à la main les différents endroits où il y a des liens ? d'un autre côté je peut consulter $HTTP_ACCEPT_LANGUAGE sur chaque page et choisir le bon template en fonction.
Pour eviter d'editer tous les liens, tu peux utiliser une variable de session (mais dans ce cas GG ne verra rien). Ou alors dire que lorsque $lang est absent alors $lang=en, sinon tu doit en effet changer tes url...

Cyril
 
Nouveau WRInaute
indexation des mots

Le problème est que si mon /index.php affiche juste le choix de la langue, google va pas super bien indexer du texte contenu dans cette page puisque la vrai page d'accueil deviendrait /en/index.pphp et /fr/index.php et que /index.php n'aurait que le texte lié au choix de la langue.
 
WRInaute occasionnel
Rien ne t'empeche de faire de la page en anglais ta page par defaut, avec une redirection sur les pages en francais et autres si la langue du navigateur est differente.
Comme ca ta page avec du texte aura un bon PR, et Google suivra les liens pour trouver les autres pages.
 
Discussions similaires
Haut