Page 1 sur 1

Détection automatique de la langue du navigateur

Posté : 11 nov. 2010, 15:41
par laresistance2
Bonjour,
J'ai un site sur trois langues
monsite.com (version française), en.monsite.com et es.monsite.com
Je voudrais donc d'après la lange du navigateur il redirectionne l'internaute vers le site approprié.
Par exemple si la lange du navigateur est l'anglais le script redirectionne automatique l'internaute vers en.monsite.com

Avez-vous une idée commet puis-je faire ça en PHP ?
Merci

Re: Détection automatique de la langue du navigateur

Posté : 11 nov. 2010, 16:50
par Berzemus
Bien sur, il faut vérifier les entêtes envoyés par le navigateur. On y trouve les langues qu'il accepte.

Re: Détection automatique de la langue du navigateur

Posté : 11 nov. 2010, 17:10
par laresistance2
Oui merci,
La variable pour faire ça est

Code : Tout sélectionner

$_SERVER['HTTP_ACCEPT_LANGUAGE']
Mais concrètement je ne sais pas vraiment comment procéder :(
Pouvez-vous un peu m'aiguiller ?
Merci d'avance

Re: Détection automatique de la langue du navigateur

Posté : 11 nov. 2010, 17:16
par AB
$lang_navig = explode(",",$_SERVER['HTTP_ACCEPT_LANGUAGE']);
$lang_navig = strtolower(substr(rtrim($lang_navig[0]),0,2));

echo $lang_navig;

Re: Détection automatique de la langue du navigateur

Posté : 20 nov. 2010, 07:32
par laresistance2
Merci j'ai inclus ce code dans ma page d'accueil (index)
Mais pouvez-vous me dire si mon code est correct

Code : Tout sélectionner

if (!isset($Language)) { $Language = explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']); $Language = strtolower(substr(chop($Langue[0]),0,2)); if ($Language == 'en') { header("Location: http://en.monsite.com"); } elseif ($Language == 'es') { header("Location: http://es.monsite.com"); } else { }}
et est-ce correct de ne rien mettre entre les accolades de la dernière condition ?
Merci

Re: Détection automatique de la langue du navigateur

Posté : 21 nov. 2010, 20:40
par laresistance2
Pouvez-vous me répondre ?
Merci

Re: Détection automatique de la langue du navigateur

Posté : 21 nov. 2010, 20:50
par xTG
C'est synthaxiquement correct, pour le dernier else s'il est vide autant ne pas le mettre. ;)

Re: Détection automatique de la langue du navigateur

Posté : 21 nov. 2010, 22:40
par stealth35
juste une info pour ceux que ca intéresse (tout le monde n'ayant pas pas encore php 5.3 et Intl)
y'a une fonction pour ca locale_accept_from_http :wink:

Re: Détection automatique de la langue du navigateur

Posté : 22 nov. 2010, 01:23
par moogli
Salut,

Pour le else, il signifie dans cette structure, le cas par defaut quand les deux premier n'existe. Dans ce cas ci pour moi je dirais le francais puisqu'il n'est pas dans les deux autres cas !

Je pense que le premier if est inutile si la variable n'est pas deja definies avant.
Un cookie peut etre une solution pour "garder" la langue du client couplé a un fomulaire pour laisser le choix ?

@+