Yii框架和多语言内容

时间:2011-05-05 11:09:02

标签: php internationalization translation yii

我继承了一个用自定义(小)php框架编写的中型网站。我想切换到yii框架,但首先我需要为以下问题找到解决方案:该网站基本上是一系列可用多种语言提供的课程和练习。事实上,所有内容都有多种语言版本。

用户可以选择他们的首选语言,并从数据库中检索本地化内容。

数据库组织:

  • 包含id和无语言列的表练习
  • table exercise_strings with exerciseId,sLanguage和sContent

如何轻松地将其与“Post :: model() - > findAll()”yii从数据库中检索数据的方式集成?

我应该编写我的自定义派生类CModel,它将从IUserIdentity类中检索语言首选项并调整查询吗? 是否有一些我可以看到的代码?

1 个答案:

答案 0 :(得分:1)

  

我应该编写我的自定义派生类CModel,它将从IUserIdentity类中检索语言首选项并调整查询吗?

我不认为,你需要那样做。有不同的方式:

1)。 您可以在创建对象实例之后和运行findAll之前使用cdbcriteria设置条件(例如where子句) http://www.yiiframework.com/doc/guide/1.1/en/database.ar(请查看页面第2季末)

2)。 另一种方法是覆盖模型中的findAll:

    public function findAll($condition='',$params=array())
        {   $condition["criteria"]->compare ....
             return parent::findAll($condition,$params);
             }

3)。 你也可以使用onBeforFind触发器http://www.yiiframework.com/doc/api/1.1/CActiveRecord#onBeforeFind-detail,它在findAll搜索之前(每次)触发

我更喜欢第一或第二个想法。