Affichage d'une page selon la langue du navigateur

Mammouth du PHP | 2937 Messages

25 nov. 2006, 19:39

Salut à tous!

Pour un projet perso que je prévoie multilingue d'emblée, j'ai développé un script permettant d'afficher les pages selon la langue du navigateur (ou d'une langue par défaut si la langue n'est pas recensée sur la base de données), et ce quand la langue n'est pas déclarée par les paramètres d'URL.

Voici le code en question:
<?php 
// Définition de la langue utilisée:
// Choix de la langue par un clic sur son code dans le menu du haut ou, à défaut, détection de la langue du navigateur
$langue_navigateur = substr ($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
$lang = (isset ($_GET['lang']) && !empty ($_GET['lang']))? $_GET['lang']: $langue_navigateur;

// Requête de comparaison de la langue utilisée avec celles recensées dans la base de données
$requete_langue = "SELECT code FROM langues WHERE code=:lang";
$preparation_requete_langue = $pdo -> prepare ($requete_langue);
$preparation_requete_langue -> execute (array (':lang' => $lang));
if ($donnees_langue = $preparation_requete_langue -> fetch (PDO::FETCH_ASSOC))
{
  $lang = $donnees_langue['code'];
}

// Langue par défaut, si celle utilisée n'est pas trouvée
else $lang = 'fr';
  
// Fermeture de la requête préparée
$preparation_requete_langue = NULL;
?>
En local (sous WampServer et sous l'adresse 127.0.0.1), ça marche à la perfection. En revanche, en ligne, ce n'est pas le cas, les pages s'affichent en français quelle que soit la langue du navigateur (sauf si on clique sur les liens 'EN', 'ES', 'PT', bien sûr). :(

Pour info, aucune erreur de la part de MySQL (qui recense 'fr', 'en', 'es' et 'pt' pour le code des langues) et de PDO n'est retournée et les pages s'affichent normalent. En outre, mon hébergement est mutualisé (chez Nuxit).

Y aurait-il un moyen de forcer l'affichage selon la langue du navigateur (si elle est reconnue par la requête) et non selon la langue par défaut? :?