在YII中更改语言

时间:2013-03-10 18:37:32

标签: 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::app()->language = 'fr'; 

    // I also used Yii::app()->setLanguage('fr');
    echo Yii::t('site','hello');
?>

但语言没有翻译。我错在哪里。请建议

3 个答案:

答案 0 :(得分:8)

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

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

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

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

通过这种方式,您可以在一个地方添加适用于所有控制器的其他内容

答案 1 :(得分:0)

您忘了设置源语言。

进入配置:

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

或app:

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

答案 2 :(得分:0)

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