Détecter la langue et la région d’un utilisateur en PHP

Lorsqu’un utilisateur ouvre la page d’accueil d’un site international, il convient de lui proposer des contenus localisés correspondant à sa langue et sa région.

Cet article décrit comment détecter la langue et la région d’un utilisateur en PHP.

Prérequis

Les locales

Les locales sont des valeurs prédéfinies correspondant à une langue et à une région.

Par exemple :

fr_FR pour le français en France
fr_CA pour le français au Canada
en_US pour l'anglais aux États-Unis

Les locales permettent de gérer des contenus localisés (traductions, dates formatées, formats numériques et monétaires…).

Détecter la locale d’un utilisateur

La liste des locales préférées d’un utilisateur est fournie par son navigateur dans la variable $_SERVER[‘HTTP_ACCEPT_LANGUAGE’].

function DetectLocale() {
    $Language = str_replace('-', '_', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
    if (preg_match('/[a-z]{2}_[A-Z]{2}/', $Language, $MatchesArray)) {
        return $MatchesArray[0];  // Locale préférée
    }
    return 'fr_FR';  // Locale par défaut
}

Une fois la locale détectée, il est possible de :

  • Conserver la locale dans un cookie avec la fonction setcookie.
  • Rediriger l’utilisateur vers une partie localisée du site. Par exemple header(‘Location: http://fr-fr.mydomain.com’); ou header(‘Location: http://mydomain.com/fr-fr/’);
  • Définir la locale utilisée par PHP avec la fonction setlocale.
  • Afficher des dates formatées avec la fonction strftime.
  • Obtenir des informations de formats numériques et monétaires localisés avec la fonction localeconv.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*