public function run() { if (null == $this->currentId || null === ($current = \Yii::$app->languageManager->getById($this->currentId))) { $current = \Yii::$app->languageManager->getCurrent(); } return $this->render('default', ['current' => $current, 'langs' => Language::find()->all()]); }
public function getById($id) { if (empty($id)) { return null; } return Language::findOne($id); }
public function createUrl($params) { if (isset($params['lang_id'])) { //Если указан идентификатор языка, то делаем попытку найти язык в БД, //иначе работаем с языком по умолчанию $lang = Language::findOne($params['lang_id']); if ($lang === null) { $lang = \Yii::$app->languageManager->getDefault(); } unset($params['lang_id']); } else { //Если не указан параметр языка, то работаем с текущим языком $lang = \Yii::$app->languageManager->getCurrent(); } //Получаем сформированный URL(без префикса идентификатора языка) $url = parent::createUrl($params); if ($lang->is_default) { return $url; } else { if ($url == '/') { return '/' . $lang->url; } elseif (preg_match('/^https?/si', $url)) { return preg_replace('#(^https?:\\/\\/[a-zA-Z0-9\\.]+)#', '$1/' . $lang->url, $url); } else { return '/' . $lang->url . $url; } } }