Php I18n For Yii框架的基础知识

Php I18n For Yii框架的基础知识,php,internationalization,yii,Php,Internationalization,Yii,这对我来说还不够 我的源语言是土耳其语,目标语言是英语(例如) 我的测试控制器的索引操作: public function actionIndex() { Yii::app()->language='en'; $this->render("index"); } 这是我的视图文件的内容: echo Yii::t('test', 'Deneme'); 最后,这是我的protected/messages/en/test.php文件的内容:

这对我来说还不够

我的源语言是土耳其语,目标语言是英语(例如)

我的测试控制器的索引操作:

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,请一步一步描述


多谢各位

这相当简单。你按照你说的做所有的语言翻译。然后,在父控制器的init方法中,您可以检查所需的语言并设置当前语言。这样,您不必在每个操作中都这样做,只需执行一次。

您应该在
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()
声明为
静态
,否则您将遇到如下错误:

在Yii的教程中,有一篇文章对此进行了很好的解释。 这样您就有了3个文件:一个是您的语言选择器,一个是语言选择器的小部件,另一个是处理语言选择器文件的行为。 在这里阅读并使用它。。。