function browser_based_language_backend($modules) { global $lang, $admin_options; // If there's no set CP language, load it automatically if (!isset($admin_options['cplanguage']) || !$lang->language_exists($admin_options['cplanguage'])) { $languages = get_preferred_languages(); foreach ($languages as $langcode => $priority) { $avi = check_if_lang_available(trim($langcode), $mybb->settings['cplanguage'], true); if ($avi === true) { break; } elseif ($avi !== false) { global $page; $lang->set_language($avi, 'admin'); $lang->load('global'); $lang->load('messages', true); // Override menu and breadcrumb to set proper language strings.. $page->_menu = array(); foreach ($modules as $m => $p) { if ($p == 1) { $lang->load("{$m}_module_meta", false, true); $meta_function = "{$m}_meta"; $meta_function(); } } $page->_breadcrumb_trail = array(); $page->add_breadcrumb_item($lang->home, "index.php"); break; } } } return $modules; }
foreach ($langs as $candidate => $quality) { if ($quality === '') { $langs[$candidate] = 1; } } arsort($langs, SORT_NUMERIC); return array_keys($langs); } return array(); } if (!empty($_REQUEST['lang'])) { $lang = $_REQUEST['lang']; } elseif (!empty($_COOKIE['lang'])) { $lang = $_COOKIE['lang']; } elseif (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) { foreach (get_preferred_languages() as $candidate) { $candidate_major = current(explode('-', $candidate, 1)); if (isset($available_languages[$candidate_major])) { $lang = $candidate_major; break; } } } if (!array_key_exists($lang, $available_languages)) { $lang = 'en'; } /* We have to clean the mess introduced by double cookie at the wrong level */ if (empty($_COOKIE['clear_lang'])) { setcookie("lang", 'deleted', 1); // Setting it a current domain level, as it stays one level up setcookie("clear_lang", "deleted", 1456167472);