Déterminer la langue d'un visiteur en PHP
accueil >
Cours >
PHP >
Déterminer la langue d'un visiteur en PHP
Cours / tutoriel écrit le 30-07-2010 par sky
Déterminer la langue d'un visiteur pour un site multilingue
Comment récupérer la langue d'un visiteur dans le contexte d'un site multilingue ?
La variable globale qui contient l'information est $_SERVER['HTTP_ACCEPT_LANGUAGE'].
Voici un exemple du contenu de cette variable de langue :
fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
Ce qui nous interesse ici c'est le fr en tout début de ligne.
On récupère les deux premières lettres en utilisant une regex qui va en plus nous permettre d'utiliser les autres données si nescessaire grace à la fonction preg_split (php 5)
<?php
$tmp = preg_split('",|;"', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
echo '<pre>';
print_r($tmp);
echo '</pre>';
?>
Le print_r($tmp); va donner quelque chose comme ceci :
Array
(
[0] => fr
[1] => fr-fr
[2] => q=0.8
[3] => en-us
[4] => q=0.5
[5] => en
[6] => q=0.3
)
Voici un exemple de code PHP pour définir la langue du visiteur.
Nous aussi définir une liste de langue dans laquelle le site est traduit.
<?php
$langages_Accepted = array(
'en' => 'English',
'fr' => 'Français',
'de' => 'Deutch'
);
$langue_Defaut = 'fr';
$langue_Selected = $langue_Defaut;
$tmp = preg_split('",|;"', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
$langue_Client = $tmp[0];
if(in_array($langue_Client, $langages_Accepted))
{
$langue_Selected = $langue_Client;
}
echo '<p>Langue du visiteur : '.$langue_Selected.'</p>';
?>
On peux très bien imaginer une redirection à la place du echo à la fin du script comme ceci :
header('location:http://'.$langue_Selected.'.domaine.com');
exit();
Commentaires
riri le 01-09-2010
je découvre votre site. Merci pour toutes ces aides !