Exemplo n.º 1
0
 public function getLangUrl()
 {
     if ($this->_lang_url === null) {
         $this->_lang_url = $this->getUrl();
         $url_list = explode('/', $this->_lang_url);
         $lang_url = isset($url_list[1]) ? $url_list[1] : null;
         if (isset(Yii::$app->request->cookies['lang']) && empty($lang_url) && Yii::$app->request->cookies->getValue('lang') != Lang::getDefaultLang()->url) {
             $lang_url = Yii::$app->request->cookies->getValue('lang');
         }
         Lang::setCurrent($lang_url);
         if ($lang_url !== null && $lang_url === Lang::getCurrent()->url && strpos($this->_lang_url, Lang::getCurrent()->url) === 1) {
             $this->_lang_url = substr($this->_lang_url, strlen(Lang::getCurrent()->url) + 1);
         }
     }
     return $this->_lang_url;
 }
Exemplo n.º 2
0
 public function createUrl($params)
 {
     //Если не указан параметр языка, то работаем с текущим языком
     $lang = Lang::getCurrent();
     //Получаем сформированный URL(без префикса идентификатора языка)
     $url = parent::createUrl($params);
     //Добавляем к URL префикс - буквенный идентификатор языка
     if ($lang->url != Lang::getDefaultLang()->url) {
         if ($url == '/') {
             return '/' . $lang->url;
         } else {
             return '/' . $lang->url . $url;
         }
     } else {
         if ($url == '/') {
             return '/';
         } else {
             return $url;
         }
     }
 }
Exemplo n.º 3
0
 public function beforeAction($action)
 {
     if (isset(Yii::$app->request->cookies['lang']) && Yii::$app->request->cookies->getValue('lang') != Lang::getDefaultLang()->url) {
         if (Yii::$app->request->Url == '/') {
             $this->redirect('/' . Yii::$app->request->cookies->getValue('lang') . '/');
         } elseif (strpos(Yii::$app->request->Url, '/' . Lang::getDefaultLang()->url . '/') !== false) {
             $this->redirect(str_replace(Lang::getDefaultLang()->url . '/', '', Yii::$app->request->Url));
         }
     }
     if (empty(Yii::$app->redis->get('translate_' . Yii::$app->language . '_text'))) {
         Yii::$app->redis->setex('translate_' . Yii::$app->language . '_text', 1800, file_get_contents(Yii::getAlias('@appFolder') . '/lang/' . Yii::$app->language . '/text/words.json'));
     }
     if (empty(Yii::$app->redis->get('translate_' . Yii::$app->language . '_messages'))) {
         Yii::$app->redis->setex('translate_' . Yii::$app->language . '_messages', 1800, file_get_contents(Yii::getAlias('@appFolder') . '/lang/' . Yii::$app->language . '/messages/words.json'));
     }
     if (empty($this->text)) {
         $this->text = json_decode(Yii::$app->redis->get('translate_' . Yii::$app->language . '_text'), true);
     }
     if (empty($this->messages)) {
         $this->messages = json_decode(Yii::$app->redis->get('translate_' . Yii::$app->language . '_messages'), true);
     }
     return parent::beforeAction($action);
 }