+ function negotiateLocale($supportedLanguages) {
+ $nlocale = $supportedLanguages[0];
+ $headers = getAllHeaders();
+ $accLcomp = explode(',', $headers['Accept-Language']);
+ $accLang = array();
+ foreach ($accLcomp as $lcomp) {
+ if (strlen($lcomp)) {
+ $ldef = explode(';', $lcomp);
+ $accLang[$ldef[0]] = (float)((strpos(@$ldef[1],'q=')===0)?substr($ldef[1],2):1);
+ }
+ }
+ if (count($accLang)) {
+ $pLang = ''; $pLang_q = 0;
+ foreach ($supportedLanguages as $wantedLang) {
+ if (isset($accLang[$wantedLang]) && ($accLang[$wantedLang] > $pLang_q)) {
+ $pLang = $wantedLang;
+ $pLang_q = $accLang[$wantedLang];
+ }
+ }
+ if (strlen($pLang)) { $nlocale = $pLang; }
+ }
+ return $nlocale;
+ }
+