Yii's I18n topic对我来说还不够。
我的来源lang是土耳其语,目标语言是英语(例如)
我的测试控制器的索引操作:
public function actionIndex()
{
Yii::app()->language='en';
$this->render("index");
}
这是我的观看文件的内容:
echo Yii::t('test', 'Deneme');
最后,这是我的 protected / messages / en / test.php 文件的内容:
return array(
'Deneme' => 'Example',
);
一切都好,它正在返回示例。但正如您所看到的,我正在我的索引操作上手动设置语言。我怎么能自动完成?我必须在所有操作中添加 Yii :: app() - > language ='en'; 吗?你如何在你的项目中使用l18n?
注意:我是Yii和l18n noob,所以请逐步描述。
谢谢。
答案 0 :(得分:5)
您应该在CWebApplication:beginRequest()
在protected/config/main.php
中,添加:
'onBeginRequest' => array('MyApp', 'beginRequest')
在protected / components中,创建一个文件MyApp.php
,并添加此类:
class MyApp {
public static function beginRequest(CEvent $event) {
//set your language, theme, etc here
}
}
请务必将beginRequest()
声明为static
,否则您会遇到以下错误:
https://github.com/yiisoft/yii/issues/794
答案 1 :(得分:3)
这很简单。如你所说,你做所有的语言翻译。然后,在父控制器中,在init方法中,你可以检查所需的语言并设置当前语言。这样,您不必在每次操作中都这样做,只需一次。
答案 2 :(得分:1)