使用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');
?>
但语言没有翻译。我错在哪里。请建议
答案 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']];