12
locale
locale
SYNOPSIS
locale()
DESCRIPTION
locale retourne la langue préférée extraite de l'en-tête HTTP Accept-Language.
La fonction retourne le code de langue ISO 639 ayant la plus grande valeur de qualité. Si l'en-tête est absent, locale retourne false.
EXEMPLE
Si la requête HTTP contient l'en-tête Accept-Language: fr-FR,fr;q=0.9,en;q=0.8, locale retourne fr.
CODE
- function locale() {
- if (empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
- return false;
- }
- $httplanguages = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
- $lang = false;
- $quality = 0.0;
- $accepted = preg_split('/,\s*/', $httplanguages);
- foreach ($accepted as $accept) {
- $match = null;
- $result = preg_match('/^([a-z]{1,8}(?:[-_][a-z]{1,8})*)(?:;\s*q=(0(?:\.[0-9]{1,3})?|1(?:\.0{1,3})?))?$/i', $accept, $match);
- if ($result < 1) {
- continue;
- }
- $q = isset($match[2]) ? (float)$match[2] : 1.0;
- if ($q > $quality) {
- $quality = $q;
- $lang = strtok($match[1], '-_');
- if ($quality == 1.0) {
- break;
- }
- }
- }
- return $lang;
- }
Commentaires