Yii框架的I18n基础知识

时间:2011-08-17 21:47:23

标签: php internationalization yii

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,所以请逐步描述。

谢谢。

3 个答案:

答案 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)

在Yii的教程中,有一篇文章解释得非常好。 通过这种方式,您有3个文件:一个,您的语言选择器,一个,语言选择器的小部件,一个是处理语言选择器文件的行为。 在这里阅读并使用它......   Manage (Target) Language in Multilingual Applications + A Language Selector Widget (i18n)