Script PHP : affichage la langue en fonction du navigateur

Nouveau WRInaute
Bonjour,
Je voudrais vous demander un renseignement:
Comment faites vous, en PHP / MySQl pour détecter automatiquement la langue du navigateur et par la suite, de redirectionner l'internaute vers la page acceuil de sa langue préférence?

Je dispose un petit site en PHP/mySQL qui contient 3 langues Français, Anglais, Espagnol.
Les URL sont les suivant :
-www.monsite.com/index_fr.php
-www.monsite.com/index_uk.php
-www.monsite.com/index_es.php

Si la langue n'est pas idetifié sur le navigateur de l'internaute, la page d'accueil par défaut sera affichée : -www.monsite.com/index_fr.php

Est ce qui vous connaissez un script tout fait qui permettra de faire cela?
Merci d'avance!

PS: Enfait ,j'ai trouvé ce ci mais je n'arrive pas à adapter à mon cas, aidez moi s'il vous plaît: Merci

<?
if (!isset($Langue)) {
$Langue = explode(",",$HTTP_ACCEPT_LANGUAGE);
$Langue = strtolower(substr(chop($Langue[0]),0,2));
}
?>
<? else {
header("Location: /index.php?Langue=fr");
} ?>
 
WRInaute impliqué
euh j'ai jamais fait ça mais il me semble qu'il ya une erreur logique

essaie plutôt ça :

Code:
if (!isset($Langue)) { 
  if(isset($HTTP_ACCEPT_LANGUAGE)){
  $Langue = explode(",",$HTTP_ACCEPT_LANGUAGE); 
  $Langue = strtolower(substr(chop($Langue[0]),0,2)); }
else 
  $Langue="fr";
} 
header("Location: /index.php?Langue=$Langue");
 
WRInaute occasionnel
Pour reprendre le code de XenonDelee et l'adapter à ton cas ça fait ceci (avec une redirection 301 c mieux je pense pour google) :

Code:
header("HTTP/1.1 301 Moved Permanently");
header("Location: /index_$Langue.php");
 
WRInaute occasionnel
Je n'interviendrait pas directement dans le code mais il faut savoir que php est passé aux Super Globale tel que $_SERVER pour ton cas, mais il existe $_GET, $_POST, $_SESSION, $_REQUEST, $_FILES, $_COOKIE, $_ENV... )je crois que j'en ai oublié une mais je ne vois plus lol...)

Tous ça pour dire que programmer c'est bien, respecter des "standards" datant de 5 ans n'est peut-être plus conseillé... passe sur le manuel php, et tu découvriras que ça pourrait te jouer des tours de tout faire à l'ancienne.
 
WRInaute impliqué
J'ai laissé $HTTP_ACCEPT_LANGUAGE pour reprendre son exemple

il est vrai qu'il est plus prudent aujourd'hui d'écrire

$_server[HTTP_ACCEPT_LANGUAGE]

Ceci dit je ne crois pas que cela provoque une faille de sécurité de garder l'ancienne notation ( dans ce cas précis ) :roll:

( mais je ne suis pas hacker :mrgreen: )
 
Nouveau WRInaute
Merci à vous tous

Bonsoir à vous tous,
Je vous remercie de vos contributions et vos remarques, cela m'a permis de mieux comprendre et adapter ce script à mes besoins.
Super génial, merci encore.
hska
 
WRInaute discret
Petite question ....

Est-ce que dans ce cas, Google ( qui ne renverra pas de HTTP_ACCEPT_LANGAGE ) ne risque pas de ne visiter que le site français ???

ou s'il en renvoie de ne visiter qu'une des versions du site ?

Ca sera dommage pour le référencement des autres versions du site .... :cry:
 
WRInaute impliqué
Oui, si tu n'as pas de liens pour passer volontairement d'une langue à l'autre... D'ailleurs sans parler de googlebot, ce sont tes visiteurs qui en ont besoin (parce que la redirection auto ne peut marcher dans tous les cas).
 
Nouveau WRInaute
J'aimerais beaucoup appliquer ce script a mon blog
http://zeb.3dvf.com/blog

mais visiblement cela ne marche pas tres bien
j'atterit sur zeb.3dvf.com/index.php/en ou fr et non pas zeb.3dvf.com/blog/index.php/en ou fr

si je changes l'url du header de la sorte :
header("Location: /blog/index.php/$Langue");
la je tombes sur zeb.3dvf.com/blog/blog/index.php/en

au secours :)

merci de votre aide
 
Nouveau WRInaute
sietjp a dit:
Pour reprendre le code de XenonDelee et l'adapter à ton cas ça fait ceci (avec une redirection 301 c mieux je pense pour google) :

Code:
header("HTTP/1.1 301 Moved Permanently");
header("Location: /index_$Langue.php");

Salut,

Je redeterre un vieux topic, mais en lisant ca, je n'ai pas compris. Pourquoi vaut-il mieux faire une redirection permanente quand on redirige suivant la langue du navigateur. Intuitivement j'aurais tendance à penser que c'est cela qu'il faut faire, mais j'ai du mal à m'expliquer quel est le raisonnement derrière ca. Si quelqu'un veux bien m'expliquer :wink:

Si je fais une page index.php qui redirige vers mon repertoire francais ou anglais selon le cas, est ce que ca va avoir une conséquence quelconque pour mon référencement (sachant qu'actuellement j'ai juste à la racine un .htaccess qui redirige vers le repertoire anglais qd la page d'accueil est demandée. Je veux remplacer ce htacess par un index.php qui detecte la langue)?

Merci de m'eclairer de vos lumières.
 
Nouveau WRInaute
Alors, vaut-il mieux (pour google) faire un redirect permanent ou pas, lorsque l'on redirige suivant la langue du navigateur?

Pas d'avis? :(
 
Nouveau WRInaute
Salut à tous,

Un petit up :oops:

J'aimerai avoir une confirmation que ca n'a pas d'impact sur le referencement avant de faire une page index qui detecte la langue du navigateur sur mon site.

Merci de votre aide.
 
Discussions similaires
Haut