Php 用YII改变语言

Php 用YII改变语言,php,yii,Php,Yii,使用YII创建新站点后,我在protected/messages中添加了一个文件夹'fr',并添加了一个文件'site.php',其中包含: 返回数组('hello'=>'bonjour') 在view/layout/main.php中,我添加了以下代码: <?php // I change the language to english and french using session. // This is just for example. Yii::a

使用YII创建新站点后,我在protected/messages中添加了一个文件夹'fr',并添加了一个文件'site.php',其中包含:

返回数组('hello'=>'bonjour')

在view/layout/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');
?>


但是语言没有被翻译。。我哪里错了。请建议您忘记设置源语言

进入配置:

return array(
   'sourceLanguage'=>'en',
),
或应用程序:

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

如果希望翻译在所有视图中正常工作,则应在控制器中设置语言

为了将语言应用于所有控制器,请在components文件夹中创建新的
Controller.php
文件,其中包含扩展
CController
class Controller
,然后所有控制器都应扩展
Controller
类。在
Controller
类重写
init()
方法中(不要忘记调用
parent::init()
)并在那里设置语言。例如:

class Controller extends CController
{
    public $layout='//layouts/column1';

    function init()
    {
        parent::init();
        Yii::app()->language = 'fr';
    }
 }

通过这种方式,您可以在一个位置添加应用于所有控制器的附加内容

您可以将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']];

如果希望翻译在所有viewsIt工作中正常工作,则应在控制器中设置语言。谢谢但在所有控制器中设置语言将是一项繁忙的任务。我想在一个地方改变语言,它将适用于所有人。我在哪里可以做到呢?我把它作为答案贴了出来