Billet du blogue

Déterminer la langue de l’utilisateur

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.

Posté le et modifié le 5 novembre 2007 à 11:06 avec les tags: .

Commentaires fermés

Les commentaires pour ce billet ont été désactivés un mois après la date de publication de ce-dernier. Vous désirez exprimer votre opinion sur ce billet malgré le fait que les commentaires aient été désactivés ? Utilisez le formulaire de contact.


Fil atom des commentaires de ce billet3 commentaires

  • 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)

  • 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?

    Absolument, sauf que cela prend deux conditions :

    • Que tu spécifies à ton navigateur que le tchèque est ton langage préféré. Par exemple, avec Firefox, il faut aller dans « Tools » Options » Advanced » General » Languages ».
    • Que le code de langage du tchèque soit dans l’array $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)