После создания нового сайта с 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'); ?>
Но язык не переводится. Где я ошибаюсь. Пожалуйста, предложите
Вы должны установить язык в контроллере, если вы хотите, чтобы переводы работали правильно во всех представлениях.
Чтобы язык применялся ко всем контроллерам, создайте в папке компонентов новый файл 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']];