Мультиязычность - Переключение Языков

Я организовал переключение языков в админке:

  1. Список языков. По событию "On select" вызываю экшн ChangeLanguage в DefaultController:



class DefaultController extends Controller {

... 

   public function actionChangeLanguage()

    {

        if(isset($_POST['_lang']) && !empty($_POST['_lang'])) 

        {

            Yii::app()->setLanguage($_POST['_lang']);

            Yii::app()->session['_lang'] = $_POST['_lang'];

            $this->redirect(Yii::app()->user->returnUrl);

        }

    }


...

}



  1. В Controller, который наследуется DefaultController следующий код:



class Controller extends CController

{


    function init()

    {

        parent::init();

        Yii::app()->setLanguage(isset(Yii::app()->session['_lang']) ? Yii::app()->session['_lang'] : Yii::app()->language); 

    } 

...



Затем выбираю в селекте язык (ex. English) и:

  • Yii::app()->session[’_lang’] возвращает ‘en’

  • Yii::app()->language возвращает язык, установленный в protected\config\main.php




'language'=>'ru',



Т.е. язык не изменяется и перевод с помощью Yii:t не работает пока я не добавлю в views\layouts\main.php такой же код, как в function init() в Controller:




<?php Yii::app()->setLanguage(isset(Yii::app()->session['_lang']) ? Yii::app()->session['_lang'] : Yii::app()->language); ?>



Подскажите, почему язык не устанавливатся без вставки кода в views\layouts\main.php