基于以下文章,我能够在一定程度上将我的CakePHP应用程序国际化 -
http://puskin.in/blog/2010/08/cakephp-manage-multiple-language-in-application/
我想扩展此功能,并提供用户可以在其用户个人资料中保存首选语言的功能。每次用户登录时,我都希望使用首选语言并以该语言显示网站内容。前 - Facebook语言设置。只要您更改语言,网站中的静态内容就会更改为该语言。
另外,我有一些静态数据,如下拉查找信息。我的桌子设计应该如何支持i18n。
任何代码段或想法?
答案 0 :(得分:1)
具有用户语言首选项设置是微不足道的。只需将字段language
添加到用户表,并允许用户在某处为其设置值。在您的应用中,您使用core.php
在Configure::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
属性,您可以过滤该属性。