$valeur) { if ($string == $cle) { $a = $valeur; break; } } return $a; } function locale_language_from_browser($languages) { // Specified by the user via the browser's Accept Language setting // Samples: "hu, en-us;q=0.66, en;q=0.33", "hu,en-us;q=0.5" $browser_langs = array(); if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) { $browser_accept = explode(",", $_SERVER['HTTP_ACCEPT_LANGUAGE']); foreach ($browser_accept as $langpart) { // The language part is either a code or a code with a quality. // We cannot do anything with a * code, so it is skipped. // If the quality is missing, it is assumed to be 1 according to the RFC. if (preg_match("!([a-z-]+)(;q=([0-9\\.]+))?!", trim($langpart), $found)) { $browser_langs[$found[1]] = (isset($found[3]) ? (float) $found[3] : 1.0); } } } // Order the codes by quality arsort($browser_langs); //Array ( [en-us] => 1 [en] => 0.7 [fr] => 0.3 ) Firefox Fr //Array ( [fr-] => 1 [en-] => 1 [fr] => 0.8 [en] => 0.4 ) Chrome 5 Fr //Array ( [fr-fr] => 1 ) Safari Fr //Array ( [fr-fr] => 1 ) iCab Fr //Array ( [zh-] => 1 [fr] => 1 [pt-] => 1 [en-] => 1 [en] => 0.9 [ja] => 0.7 [de] => 0.6 [es] => 0.5 [it] => 0.4 [pt] => 0.3 [pl] => 0.1 [ru] => 0.1 [ko] => 0.1 [sv] => 0.1 [nl] => 0.1 [nb] => 0.1 [da] => 0.1 [fi] => 0.1 ) Opera 10.6 // Try to find the first preferred language we have foreach ($browser_langs as $langcode => $q) { foreach ($languages as $value) { /* $string = strtolower(str_replace('_','-',$value)); echo $langcode . '-' . $q . '-' . $value . '
'; if ($string == $langcode) { echo $value; return $value; break; } */ //echo $langcode . '-' . $q . '-' . $value . '
'; if (substr($langcode, 0, 2) == substr($value, 0, 2)) { $lang = $value; break 2; } } } if (!isset($lang)) $lang = 'fr_FR'; return $lang; } // Affiche sur popup (POST=-1) ou une liste de liens (GET=-1) pour choisir la langue //echo choose_lang($liste_locale, $get=0, $post=-1); function choose_lang($select_language,$liste, $get, $post) { global $nation; if ($get == true) { $i = 1; foreach ($liste as $value) { //echo "" . recherche($nation,$value) . ""; $links .= "".gettext("flag").""; if ($i < count($liste)) $links .= ' | '; $i++; } } elseif ($post == true) { $links = "
\n"; $links .= "\n"; $links .= "
\n"; } return $links; } ?>