CakePHP:让用户选择语言

CakePHP:让用户选择语言,php,cakephp,Php,Cakephp,我希望用户在cakePHP应用程序中选择他们的语言。我有德语和英语的default.po文件。但是当我调用$this->Session->write'Config.language'、'ger'时;在控制器函数中,不会发生任何事情 我该怎么做才能让它工作 控制器功能: public function changeLang() { $this->autoRender = false; $this->Session->write('Config.language

我希望用户在cakePHP应用程序中选择他们的语言。我有德语和英语的default.po文件。但是当我调用$this->Session->write'Config.language'、'ger'时;在控制器函数中,不会发生任何事情

我该怎么做才能让它工作

控制器功能:

public function changeLang() { 
    $this->autoRender = false; 
    $this->Session->write('Config.language','ger'); 
    Configure::write('Config.language','ger'); 
    $this->Session->setFlash(__('Language changed succefully.')); 
    $this->redirect($this->referer()); 
}
文档说明您需要写入configure类并设置会话变量

class AppController extends Controller {
    public function beforeFilter() {
        Configure::write('Config.language', $this->Session->read('Config.language'));
    }
}

我找到了解决方案,我为我的文件夹使用了错误的语言代码。我有ger,但它应该是deu。

什么版本的cakephp?我使用的是2.2.3版。您的语言控制器中有before过滤器吗?您正在调用parent::beforeFilter;在里面?在没有任何通知的情况下,很难判断配置中是否发生了任何事情。你能试试prConfigure::读取'Config.language'吗;要检查是否实际设置了任何值?是的,我在其中设置了beforeFilter,我正在调用父级。它将值保存在我的会话和配置中,但它一直是英语:/注意:您应该使用“de”德语或“de”德语-德语方言作为德语的语言代码,因为这是ISO-639标准。我在AppController中也这样做了。在我的LangController中,我实现了:公共函数changeLang{$this->autoRender=false;$this->Session->write'Config.language','ger';Configure::write'Config.language','ger';$this->Session->setFlash\uuu'language成功更改。;$this->redirect$this->referer;}