$metadata) { $option = array (); $option['text'] = $metadata['name']; $option['value'] = $lang; if ($lang == $actualLanguage) { $option['selected'] = 'selected="selected"'; } $list[] = $option; } return $list; } /** * Tries to detect the language * * @access public * @return string locale * @since 1.5 */ function detectLanguage() { if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) { $systemLangs = JLanguage::getKnownLanguages(); $browserLangs = explode( ',', $_SERVER['HTTP_ACCEPT_LANGUAGE'] ); foreach ($browserLangs as $browserLang) { // slice out the part before ; on first step, the part before - on second, place into array $browserLang = substr( $browserLang, 0, strcspn( $browserLang, ';' ) ); $primary_browserLang = substr( $browserLang, 0, 2 ); foreach($systemLangs as $systemLang => $metadata) { if (strtolower($browserLang) == strtolower(substr($metadata['tag'], 0, strlen($browserLang)))) { return $systemLang; } elseif ($primary_browserLang == substr($metadata['tag'], 0, 2)) { $primaryDetectedLang = $systemLang; } } if (isset($primaryDetectedLang)) { return $primaryDetectedLang; } } } return 'en-GB'; } }