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;
         }
     }
 }