示例#1
0
 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;
 }
示例#2
0
 /**
  * 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;
 }
示例#3
0
 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);
 }
示例#5
0
 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);
 }