The returned array will be in the same order as the input.
public static getAcceptLanguage ( ) : array | ||
Résultat | array | An associative array with each language and the score for that language. |
/** * This method returns the preferred language for the user based on the Accept-Language HTTP header. * * @return string The preferred language based on the Accept-Language HTTP header, or null if none of the languages * in the header is available. */ private function getHTTPLanguage() { $languageScore = HTTP::getAcceptLanguage(); // for now we only use the default language map. We may use a configurable language map in the future $languageMap = self::$defaultLanguageMap; // find the available language with the best score $bestLanguage = null; $bestScore = -1.0; foreach ($languageScore as $language => $score) { // apply the language map to the language code if (array_key_exists($language, $languageMap)) { $language = $languageMap[$language]; } if (!in_array($language, $this->availableLanguages, true)) { // skip this language - we don't have it continue; } /* Some user agents use very limited precision of the quality value, but order the elements in descending * order. Therefore we rely on the order of the output from getAcceptLanguage() matching the order of the * languages in the header when two languages have the same quality. */ if ($score > $bestScore) { $bestLanguage = $language; $bestScore = $score; } } return $bestLanguage; }
/** * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\HTTP::getAcceptLanguage() instead. */ public static function getAcceptLanguage() { return \SimpleSAML\Utils\HTTP::getAcceptLanguage(); }
/** * This function gets the prefered language for the user based on the Accept-Language http header. * * @return The prefered language based on the Accept-Language http header, or NULL if none of the * languages in the header were available. */ private function getHTTPLanguage() { $languageScore = \SimpleSAML\Utils\HTTP::getAcceptLanguage(); /* For now we only use the default language map. We may use a configurable language map * in the future. */ $languageMap = self::$defaultLanguageMap; /* Find the available language with the best score. */ $bestLanguage = NULL; $bestScore = -1.0; foreach ($languageScore as $language => $score) { /* Apply the language map to the language code. */ if (array_key_exists($language, $languageMap)) { $language = $languageMap[$language]; } if (!in_array($language, $this->availableLanguages, TRUE)) { /* Skip this language - we don't have it. */ continue; } /* Some user agents use very limited precicion of the quality value, but order the * elements in descending order. Therefore we rely on the order of the output from * getAcceptLanguage() matching the order of the languages in the header when two * languages have the same quality. */ if ($score > $bestScore) { $bestLanguage = $language; $bestScore = $score; } } return $bestLanguage; }