【问题标题】:Basics of I18n For Yii FrameworkYii 框架的 I18n 基础知识
【发布时间】:2011-08-17 21:47:22
【问题描述】:

Yii's I18n topic 对我来说还不够。

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

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

public function actionIndex()
    {
        Yii::app()->language='en';
        $this->render("index");
    }

这是我的视图文件的内容:

echo Yii::t('test', 'Deneme');

最后,这是我的 protected/messages/en/test.php 文件的内容:

return array(
    'Deneme' => 'Example',
);

一切正常,它正在返回 Example 。但正如您所见,我在 index 操作 上手动设置语言。我怎样才能自动做到这一点?我必须在所有操作中添加 Yii::app()->language='en'; 吗?您是如何在项目中使用 l18n 的?

注意:我是 Yii 和 l18n 菜鸟,所以请逐步描述。

谢谢。

【问题讨论】:

    标签: php internationalization yii


    【解决方案1】:

    您应该将目标语言设置为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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        在 Yii 的教程中有一篇文章解释的很好。 这样你就有了 3 个文件:一个,你的语言选择器,一个,语言选择器的小部件,一个是处理你的语言选择器文件的行为。 在这里阅读并使用它... Manage (Target) Language in Multilingual Applications + A Language Selector Widget (i18n)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-04-16
          • 2018-05-25
          • 2014-11-28
          • 2014-02-14
          • 2023-04-10
          相关资源
          最近更新 更多