After creating a new site with YII, I added a folder \'fr\' in protected/messages and added a file \'site.php\' which contains:
return array(\'hello\' =>
You forgot to set source language.
Into config:
return array(
'sourceLanguage'=>'en',
),
Or app:
Yii::app()->sourceLanguage = 'en';
You should set language in the controller if you want translations to work properly in all views.
In order for language to be applied to all Controllers, create in components folder new Controller.php
file with class Controller
which extends CController
, and then all your controllers should extend Controller
class. in Controller
class override init()
method (don't forget to call parent::init()
) and set language there. For example:
class Controller extends CController
{
public $layout='//layouts/column1';
function init()
{
parent::init();
Yii::app()->language = 'fr';
}
}
This way you can add additional things which should apply to all Controllers at one place
You can set the default languages in the config/main.php as
return array(
...
'sourceLanguage' => 'fr',
'language'=>'en',
...
'params' => array(
...
'languages'=>array('en_us'=>'English', 'fr'=>'French', 'fa_ir'=>'فارسی'),
....
),
);
and change your language everywhere you like:
Yii::app()->language = Yii::app()->params->languages['fa_ir'];
also for more experience, maybe:
Yii::app()->language = Yii::app()->params->languages[$_GET['lang']];