public function init() { parent::init(); if ($this->currentLanguage === null) { $this->currentLanguage = Language::getCurrent(); } if ($this->allowedLanguages === null) { $this->allowedLanguages = Language::find()->where('`id` != :id', [':id' => $this->currentLanguage->id])->all(); } $this->cssClass .= ' dropdown dropdown-language'; $this->options['class'] = trim($this->cssClass); }
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; Language::setCurrent($lang_url); if ($lang_url !== null && $lang_url === Language::getCurrent()->url_key && strpos($this->_lang_url, Language::getCurrent()->url_key) === 1) { $this->_lang_url = substr($this->_lang_url, strlen(Language::getCurrent()->url_key) + 1); } } return $this->_lang_url; }
public function createUrl($params) { if (isset($params['lang_id'])) { //Если указан идентификатор языка, то делаем попытку найти язык в БД, //иначе работаем с языком по умолчанию $lang = Language::findOne($params['lang_id']); if ($lang === null) { $lang = Language::getDefaultLang(); } unset($params['lang_id']); } else { //Если не указан параметр языка, то работаем с текущим языком $lang = Language::getCurrent(); } //Получаем сформированный URL(без префикса идентификатора языка) $url = parent::createUrl($params); //Добавляем к URL префикс - буквенный идентификатор языка if ($url == '/') { return '/' . $lang->url_key; } else { return '/' . $lang->url_key . $url; } }