public function getPreferredAvailableLanguage() { $preferedLanguages = $this->getPreferredLanguages(); $languages = array_keys(Yii::app()->params['availableLanguages']); foreach ($preferedLanguages as $preferredLanguage) { foreach ($languages as $language) { $preferredLanguage = CLocale::getCanonicalID($preferredLanguage); if ($language === $preferredLanguage) { return $language; } } } return false; }
/** * Returns the user preferred language. * The returned language ID will be canonicalized using {@link CLocale::getCanonicalID}. * This method returns false if the user does not have language preference. * @return string the user preferred language. */ public function getPreferredLanguage() { if ($this->_preferredLanguage === null) { if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) && ($n = preg_match_all('/([\\w\\-_]+)\\s*(;\\s*q\\s*=\\s*(\\d*\\.\\d*))?/', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $matches)) > 0) { $languages = array(); for ($i = 0; $i < $n; ++$i) { $languages[$matches[1][$i]] = empty($matches[3][$i]) ? 1.0 : floatval($matches[3][$i]); } arsort($languages); foreach ($languages as $language => $pref) { return $this->_preferredLanguage = CLocale::getCanonicalID($language); } } return $this->_preferredLanguage = false; } return $this->_preferredLanguage; }
public function getPreferredLanguage() { $preferredLanguages = $this->getPreferredLanguages(); return !empty($preferredLanguages) ? CLocale::getCanonicalID($preferredLanguages[0]) : false; }
/** * @param string $language the language that the source messages are written in. */ public function setLanguage($language) { $this->_language = CLocale::getCanonicalID($language); }
public function getPreferredLanguage($languages = array()) { $preferredLanguages = $this->getPreferredLanguages(); if (empty($languages)) { return !empty($preferredLanguages) ? CLocale::getCanonicalID($preferredLanguages[0]) : false; } foreach ($preferredLanguages as $preferredLanguage) { $preferredLanguage = CLocale::getCanonicalID($preferredLanguage); foreach ($languages as $language) { $language = CLocale::getCanonicalID($language); // en_us==en_us, en==en_us, en_us==en if ($language === $acceptedLanguage || strpos($acceptedLanguage, $language . '_') === 0 || strpos($language, $acceptedLanguage . '_') === 0) { return $language; } } } return reset($languages); }