Détection automatique de la langue du navigateur

Eléphanteau du PHP | 31 Messages

11 nov. 2010, 15:41

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

ViPHP
ViPHP | 4039 Messages

11 nov. 2010, 16:50

Bien sur, il faut vérifier les entêtes envoyés par le navigateur. On y trouve les langues qu'il accepte.
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphanteau du PHP | 31 Messages

11 nov. 2010, 17:10

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

ViPHP
AB
ViPHP | 5818 Messages

11 nov. 2010, 17:16

$lang_navig = explode(",",$_SERVER['HTTP_ACCEPT_LANGUAGE']);
$lang_navig = strtolower(substr(rtrim($lang_navig[0]),0,2));

echo $lang_navig;

Eléphanteau du PHP | 31 Messages

20 nov. 2010, 07:32

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

Eléphanteau du PHP | 31 Messages

21 nov. 2010, 20:40

Pouvez-vous me répondre ?
Merci

ViPHP
xTG
ViPHP | 7331 Messages

21 nov. 2010, 20:50

C'est synthaxiquement correct, pour le dernier else s'il est vide autant ne pas le mettre. ;)

ViPHP
ViPHP | 5462 Messages

21 nov. 2010, 22:40

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:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

22 nov. 2010, 01:23

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 ?

@+
Il en faut peu pour être heureux ......