Php 用YII改变语言
使用YII创建新站点后,我在protected/messages中添加了一个文件夹'fr',并添加了一个文件'site.php',其中包含: 返回数组('hello'=>'bonjour') 在view/layout/main.php中,我添加了以下代码: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
<?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工作中正常工作,则应在控制器中设置语言。谢谢但在所有控制器中设置语言将是一项繁忙的任务。我想在一个地方改变语言,它将适用于所有人。我在哪里可以做到呢?我把它作为答案贴了出来