Voici la fonction PHP que j’utilise pour déterminer la langue du navigateur de l’utilisateur dans le cas d’un site bilingue.
/**
* Retourne le langage préféré de l'utilisateur
*
* @author Rémi Prévost <remi-at-exomel-dot-com>
* @return string
*/
function get_language() {
// placer le langage par défaut comme premier élément
$lang_disponibles = array('fr', 'en');
$langages = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
$langages = explode(",",$langages);
$lang_final = null;
foreach($langages as $lang) {
$lang_details = explode(';', $lang);
$lang_reel = substr($lang_details[0],0,2);
if ( isset($lang_disponibles[$lang_reel]) ) {
$lang_final = $lang_reel;
break;
}
}
if (!$lang_final) {
$lang_d = array_keys($lang_disponibles);
$lang_final = $lang_disponibles[$lang_d[0]];
}
return $lang_final;
}
On peut ensuite l’utiliser ainsi :
echo 'Votre langage préféré est: ' . get_language();
Mise à jour — 5 novembre 2007 : J’ai modifié le code pour ne pas utiliser $lang_disponibles[0] qui semblait causer des problèmes à Internet Explorer (bien que je ne vois pas comment un navigateur pourrait avoir une incidence sur du code côté-serveur). J’ai plutôt utilisé la fonction array_keys() de PHP pour déterminer quelle est la langue par défaut à utiliser.
Vraiment pas fou d’utiliser substr, j’ai souvent tendance à oublier cette fonction pourtant si simple et très utile!
David Brisebois (24 août 2007 à 21:21 EST)
c’est cute « langage préféré ». moi, je trouve que le tchèque c’est vraiment beau, ta fonction va-tu me sortir ça?
mireille (25 août 2007 à 10:49 EST)
Absolument, sauf que cela prend deux conditions :
$lang_disponibles, ce qui signifie que le site Web possède une version en tchèque.Rémi Prévost (25 août 2007 à 11:17 EST)