CakePHP:国际化Web应用程序

时间:2012-01-08 02:31:09

标签: cakephp cakephp-1.3

基于以下文章,我能够在一定程度上将我的CakePHP应用程序国际化 -

http://puskin.in/blog/2010/08/cakephp-manage-multiple-language-in-application/

我想扩展此功能,并提供用户可以在其用户个人资料中保存首选语言的功能。每次用户登录时,我都希望使用首选语言并以该语言显示网站内容。前 - Facebook语言设置。只要您更改语言,网站中的静态内容就会更改为该语言。

另外,我有一些静态数据,如下拉查找信息。我的桌子设计应该如何支持i18n。

任何代码段或想法?

1 个答案:

答案 0 :(得分:1)

具有用户语言首选项设置是微不足道的。只需将字段language添加到用户表,并允许用户在某处为其设置值。在您的应用中,您使用core.phpConfigure::write('Config.language', 'eng')中设置默认语言并在其他地方覆盖,最好在AppController::beforeFilter中填写:

public function beforeFilter() {
    if ($this->Auth->user('language')) {
        Configure::write('Config.language', $this->Auth->user('language'));
    }
}

现在,Cake的所有L10n功能都将以用户选择的语言输出内容。

如果您需要Cake未涵盖的任何其他语言逻辑,您可能必须自己实现它。我建议你打开一个关于你所关注的具体问题的新的具体问题。通常,您将基于Configure::read('Config.language')中的值的任何自定义语言逻辑。如果您拥有包含多种语言描述的产品,则可以Product拥有多个Description关系,其中每个Description都有一个language属性,您可以过滤该属性。