Я организовал переключение языков в админке:
- Список языков. По событию "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);
}
}
...
}
- В 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