Изменение языка в YII

После создания нового сайта с YII я добавил папку «fr» в защищенных / сообщениях и добавил файл «site.php», который содержит:

return array ('hello' => 'bonjour');

в представлении / макете / main.php я добавил следующий код:

<?php // I change the language to english and french using session. // This is just for example. Yii::app()->language = 'fr'; // I also used Yii::app()->setLanguage('fr'); echo Yii::t('site','hello'); ?> 

Но язык не переводится. Где я ошибаюсь. Пожалуйста, предложите

Related of "Изменение языка в YII"

Вы должны установить язык в контроллере, если вы хотите, чтобы переводы работали правильно во всех представлениях.

Чтобы язык применялся ко всем контроллерам, создайте в папке компонентов новый файл Controller.php с class Controller который расширяет CController , а затем все ваши контроллеры должны расширить класс Controller . в классе override init() класса Controller (не забудьте вызвать parent::init() ) и установить там язык. Например:

 class Controller extends CController { public $layout='//layouts/column1'; function init() { parent::init(); Yii::app()->language = 'fr'; } } 

Таким образом, вы можете добавить дополнительные вещи, которые должны применяться ко всем контроллерам в одном месте

Вы забыли установить исходный язык.

В конфигурацию:

 return array( 'sourceLanguage'=>'en', ), 

Или приложение:

 Yii::app()->sourceLanguage = 'en'; 

Вы можете установить языки по умолчанию в config / main.php как

 return array( ... 'sourceLanguage' => 'fr', 'language'=>'en', ... 'params' => array( ... 'languages'=>array('en_us'=>'English', 'fr'=>'French', 'fa_ir'=>'فارسی'), .... ), ); 

и измените свой язык везде, где вам нравится:

 Yii::app()->language = Yii::app()->params->languages['fa_ir']; 

также для большего количества опыта, может быть:

 Yii::app()->language = Yii::app()->params->languages[$_GET['lang']];