Piwik\Common::extractLanguageAndRegionCodeFromBrowserLanguage PHP Method

extractLanguageAndRegionCodeFromBrowserLanguage() public static method

* The language tag is defined by ISO 639-1 * The region tag is defined by ISO 3166-1
public static extractLanguageAndRegionCodeFromBrowserLanguage ( string $browserLanguage, array $validLanguages = [] ) : string
$browserLanguage string Browser's accepted langauge header
$validLanguages array array of valid language codes. Note that if the array includes "fr" then it will consider all regional variants of this language valid, such as "fr-ca" etc.
return string 2 letter ISO 639 code 'es' (Spanish) or if found, includes the region as well: 'es-ar'
    public static function extractLanguageAndRegionCodeFromBrowserLanguage($browserLanguage, $validLanguages = array())
    {
        $validLanguages = self::checkValidLanguagesIsSet($validLanguages);
        if (!preg_match_all('/(?:^|,)([a-z]{2,3})([-][a-z]{2})?/', $browserLanguage, $matches, PREG_SET_ORDER)) {
            return self::LANGUAGE_CODE_INVALID;
        }
        foreach ($matches as $parts) {
            $langIso639 = $parts[1];
            if (empty($langIso639)) {
                continue;
            }
            // If a region tag is found eg. "fr-ca"
            if (count($parts) == 3) {
                $regionIso3166 = $parts[2];
                // eg. "-ca"
                if (in_array($langIso639 . $regionIso3166, $validLanguages)) {
                    return $langIso639 . $regionIso3166;
                }
                if (in_array($langIso639, $validLanguages)) {
                    return $langIso639 . $regionIso3166;
                }
            }
            // eg. "fr" or "es"
            if (in_array($langIso639, $validLanguages)) {
                return $langIso639;
            }
        }
        return self::LANGUAGE_CODE_INVALID;
    }

Usage Example

Beispiel #1
0
 /**
  * For better privacy we store only the main language code, instead of the whole browser language string.
  * 
  * @param $acceptLanguagesString
  * @return string
  */
 protected function getSingleLanguageFromAcceptedLanguages($acceptLanguagesString)
 {
     if (empty($acceptLanguagesString)) {
         return '';
     }
     $languageCode = Common::extractLanguageAndRegionCodeFromBrowserLanguage($acceptLanguagesString);
     return $languageCode;
 }
All Usage Examples Of Piwik\Common::extractLanguageAndRegionCodeFromBrowserLanguage