YiiFramework Yii2 мультиязычность UrlManager

webplus

Новичок
Здравствуйте!
В Yii2 не срабатывает в классе LangUrlManager переопределение переменной Yii::$app->language
вот код:
PHP:
namespace app\components\urlManager;
use yii\web\UrlManager;
use Yii;
class LangUrlManager extends UrlManager{
    public $languages=array('en','ru');
    public $lang='ru';
    public $langParam='language';

    public function createUrl($params=array()){
        $userLang=Yii::$app->getRequest()->getPreferredLanguage();
        //if language pass via url use it
        if(isset($_GET[$this->langParam])&&in_array($_GET[$this->langParam],$this->languages)){
            Yii::$app->language=$_GET[$this->langParam];
        //else if preffered language is allowed
        }elseif(in_array($userLang,$this->languages)) {
            Yii::$app->language=$userLang;
        //else use the first language from the list
        }else Yii::$app->language=$this->lang;
       
    //print_r($_GET);
        if(!isset($params[$this->langParam])){ if(Yii::$app->language != $this->lang)$params[$this->langParam]=Yii::$app->language;}
        else if($params[$this->langParam] == $this->lang)unset($params[$this->langParam]);
        //print_r($params);
        return parent::createUrl($params);
    }

}
В урлы язык подставляется, но если вывести в контроллере переменную Yii::$app->language - то она не изменилась. Также из за этого messages не переключаются на нужный язык
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Последнее редактирование:

atoumus

Новичок
Нет необходимости писать свой UrlManager, т.к. он уже написан за нас :) https://github.com/codemix/yii2-localeurls

Подставляет в URL текущий язык, например: site.com/en/some-page
Также определяет наиболее подходящий язык пользователя на основе заголовков его браузера.

Подробнее о том как использовать этот компонент, и вообще как пошагово настроить мультиязычность в Yii2, можно почитать тут: http://atoumus.github.io/yii2-i18n.html
 
Сверху