Detect User Language With PHP

D

This function uses php server variables to detect the “possible” language of the browser of the connected user. This let you show information with the correct language.
Since the HTTP_ACCEPT_LANGUAGE variable contains many information there is some dirty job to do with regular expression to clean the variable and determine the most important value from the ones contained.
The HTTP_ACCEPT_LANGUAGE contains language and q factor. This “q factor” indicates the importance of the language. The bigger is q factor the most important is the language, so the function split the variable, detect q factor and sort to extract the most important.

function getUserLanguage() {
$langs = array();
if (isset($_SERVER[‘HTTP_ACCEPT_LANGUAGE’])) {
// break up string into pieces (languages and q factors)
preg_match_all(‘/([a-z]{1,8}(-[a-z]{1,8})?)s*(;s*qs*=s*(1|0.[0-9]+))?/i’,
$_SERVER[‘HTTP_ACCEPT_LANGUAGE’], $lang_parse);
if (count($lang_parse[1])) {
// create a list like “en” => 0.8
$langs = array_combine($lang_parse[1], $lang_parse[4]);
// set default to 1 for any without q factor
foreach ($langs as $lang => $val) {
if ($val === ”) $langs[$lang] = 1;
}
// sort list based on value
arsort($langs, SORT_NUMERIC);
}
}
//extract most important (first)
foreach ($langs as $lang => $val) { break; }
//if complex language simplify it
if (stristr($lang,”-“)) {$tmp = explode(“-“,$lang); $lang = $tmp[0]; }
return $lang;
}

About the author

sonal.raut
By sonal.raut

Category