This class extends Yii's UrlManager and adds features to detect the language from the URL or from browser settings transparently. It also can persist the language in the user session and optionally in a cookie. It also adds the language parameter to any created URL.
Inheritance: extends yii\web\UrlManager
Exemple #1
0
 /** @inheritdoc */
 public function createUrl($params)
 {
     if (isset($params[$this->pageParam]) && in_array($params[$this->pageParam], [0, 1])) {
         unset($params[$this->pageParam]);
     }
     return parent::createUrl($params);
 }
Exemple #2
0
 public function init()
 {
     /*
      * Чтобы избежать бесконечного редиректа смотрим, есть ли у сайта
      * язык, который установлен в куках пользователя
      * Есть такого языка нет, устанавливаем язык по умолчанию
      * */
     if (!ArrayHelper::getValue($this->languages, Yii::$app->session[$this->languageSessionKey])) {
         Yii::$app->session[$this->languageSessionKey] = Yii::$app->language;
     }
     parent::init();
 }
 /**
  * @throws \yii\base\InvalidConfigException
  */
 public function init()
 {
     //        $languages=[];
     //        if(Yii::$app->params['settings']['languages']){
     //            foreach(Yii::$app->params['settings']['languages'] as $lang=>$name){
     //                $languages[]=$lang;
     //            }
     //        }
     //        $this->languages=$languages;
     if (!Yii::$app->user->isGuest) {
         $this->enableLanguageDetection = false;
         $this->enableLanguagePersistence = false;
     }
     parent::init();
 }
 /**
  * @inheritdoc
  */
 public function init()
 {
     parent::init();
     self::checkDependency('codemix\\localeurls\\UrlManager', 'codemix/yii2-localeurls', "");
     if (empty($this->languages)) {
         if (empty($this->allowClass)) {
             throw new InvalidConfigException('Enter Class for load languages array for ex \\amass\\langprettyurl\\Component.');
         }
         /* @var Component $data */
         $data = Yii::createObject(['class' => $this->allowClass]);
         $this->languages = $data->languages;
     }
     if ($this->enableLocaleUrls && $this->languages) {
         if (!$this->enablePrettyUrl) {
             throw new InvalidConfigException('Locale URL support requires enablePrettyUrl to be set to true.');
         }
     }
     $this->_defaultLanguage = Yii::$app->language;
 }
 public function init()
 {
     \Yii::$app->language = Language::getDefault();
     $this->languages = Language::enabled();
     parent::init();
 }
Exemple #6
0
<?php

return ['components' => ['user' => ['identityClass' => 'yii\\fluent\\models\\User', 'enableAutoLogin' => true, 'loginUrl' => ['fluent/user/login']], 'urlManager' => ['class' => \codemix\localeurls\UrlManager::className(), 'languages' => ['en', 'ru' => 'ru-RU'], 'enableLanguagePersistence' => false, 'rules' => [['class' => 'yii\\fluent\\components\\PagesRule']]], 'i18n' => ['translations' => ['fluent/*' => ['sourceLanguage' => 'en-US', 'basePath' => '@fluent/messages', 'class' => 'yii\\i18n\\PhpMessageSource', 'fileMap' => ['fluent/user' => 'user.php', 'fluent/models' => 'models.php']], 'interface' => ['sourceLanguage' => 'en-US', 'class' => \yii\fluent\components\DbMessageSource::className()]]], 'thumbnail' => ['class' => 'himiklab\\thumbnail\\EasyThumbnail', 'cacheAlias' => 'assets/thumbnails']], 'modules' => ['admin' => ['class' => 'yii\\fluent\\modules\\admin\\Module']]];