Ejemplo n.º 1
0
 /**
  * Tries to determine ID of the current user's language by using cookies or browser language
  * @return  integer|null    Null - could not determine the language
  */
 public static function run()
 {
     // We are looking for language in the user's cookie
     if (isset($_COOKIE['x-language-id'])) {
         $isset = LangHelper::getLanguageByParam('id', $_COOKIE['x-language-id']);
         if ($isset !== null) {
             return $isset['id'];
         }
     }
     // Let's look at the language of the browser
     if (getenv('HTTP_ACCEPT_LANGUAGE')) {
         $arr = explode(';', getenv('HTTP_ACCEPT_LANGUAGE'));
         foreach ($arr as $val) {
             $val = preg_replace("/^q=[\\d\\.]+,?/", '', $val);
             $isset = LangHelper::getLanguageByParam('locale', substr($val, 0, 2));
             if ($isset !== null) {
                 return $isset['id'];
             }
         }
     }
     // Default language
     $lang_id = LangHelper::getLanguage('id');
     if ($lang_id !== null) {
         return $lang_id;
     }
 }
Ejemplo n.º 2
0
 /**
  * Returns current link language
  * @return array|null
  */
 public static function detectLinkLang()
 {
     $languageInurl = Yii::$app->request->languageInurl;
     if ($languageInurl) {
         $current = LangHelper::getLanguageByParam('url', $languageInurl);
     } else {
         $current = LangHelper::getLanguageByParam('default', true);
     }
     return $current;
 }
Ejemplo n.º 3
0
 public function createUrl($params)
 {
     // Url's language such as "en"
     $url_lang = Yii::$app->language;
     // If isset lang param
     if (isset($params['x-language-url'])) {
         // Do not change url
         if ($params['x-language-url'] === false) {
             unset($params['x-language-url']);
             return parent::createUrl($params);
         }
         // If exists language
         $xLang = LangHelper::getLanguageByParam('url', $params['x-language-url']);
         if ($xLang) {
             $url_lang = $xLang['url'];
         }
     }
     $current = LangHelper::getLanguageByParam('locale', $url_lang);
     $isDefault = isset($current['default']) && $current['default'];
     // Delete if is pretty url
     if ($this->enablePrettyUrl || $isDefault) {
         unset($params['x-language-url']);
     }
     $url = parent::createUrl($params);
     if ($current) {
         // Is curent language
         // Pretty url
         if ($this->enablePrettyUrl && !$this->showScriptName) {
             $pattern = "/^" . preg_quote($this->baseUrl, '/') . "/";
             $replaceTo = $this->baseUrl;
             if (!$isDefault) {
                 $replaceTo .= '/' . $url_lang;
             }
             $url = preg_replace($pattern, $replaceTo, $url);
         } else {
             if ($this->enablePrettyUrl && $this->showScriptName) {
                 // Pretty url with showScriptName
                 $pattern = "/^" . preg_quote($this->scriptUrl, '/') . "/";
                 $replaceTo = $this->baseUrl;
                 if (!$isDefault) {
                     $replaceTo .= '/' . $url_lang;
                 }
                 $url = preg_replace($pattern, $replaceTo, $url);
             }
         }
     }
     return $url;
 }
Ejemplo n.º 4
0
 public function getPathInfo()
 {
     $pathInfo = parent::getPathInfo();
     $pattern = LangHelper::pattern();
     if (preg_match("/^({$pattern})\\/(.*)/", $pathInfo, $arr)) {
         $this->lang_url = $arr[1];
         $pathInfo = $arr[count($arr) - 1];
     } else {
         if (isset($this->queryParams['x-language-url']) && LangHelper::getLanguageByParam('url', $this->queryParams['x-language-url'])) {
             // If enablePrettyUrl===false
             $this->lang_url = $this->queryParams['x-language-url'];
         } else {
             $this->lang_url = null;
         }
     }
     return $pathInfo;
 }