public function selectLanguage()
{
// check forced language
if (!empty($GLOBALS['cfg']['Lang'])) {
$lang = $this->getLanguage($GLOBALS['cfg']['Lang']);
if ($lang !== false) {
return $lang;
}
$this->_lang_failed_cfg = true;
}
// Don't use REQUEST in following code as it might be confused by cookies
// with same name. Check user requested language (POST)
if (!empty($_POST['lang'])) {
$lang = $this->getLanguage($_POST['lang']);
if ($lang !== false) {
return $lang;
}
$this->_lang_failed_request = true;
}
// check user requested language (GET)
if (!empty($_GET['lang'])) {
$lang = $this->getLanguage($_GET['lang']);
if ($lang !== false) {
return $lang;
}
$this->_lang_failed_request = true;
}
// check previous set language
if (!empty($_COOKIE['pma_lang'])) {
$lang = $this->getLanguage($_COOKIE['pma_lang']);
if ($lang !== false) {
return $lang;
}
$this->_lang_failed_cookie = true;
}
$langs = $this->availableLanguages();
// try to find out user's language by checking its HTTP_ACCEPT_LANGUAGE variable;
$accepted_languages = PMA_getenv('HTTP_ACCEPT_LANGUAGE');
if ($accepted_languages) {
foreach (explode(',', $accepted_languages) as $header) {
foreach ($langs as $language) {
if ($language->matchesAcceptLanguage($header)) {
return $language;
}
}
}
}
// try to find out user's language by checking its HTTP_USER_AGENT variable
$user_agent = PMA_getenv('HTTP_USER_AGENT');
if (!empty($user_agent)) {
foreach ($langs as $language) {
if ($language->matchesUserAgent($user_agent)) {
return $language;
}
}
}
// Didn't catch any valid lang : we use the default settings
if (isset($langs[$GLOBALS['cfg']['DefaultLang']])) {
return $langs[$GLOBALS['cfg']['DefaultLang']];
}
// Fallback to English
return $langs['en'];
}