cakephp通过url选择语言

cakephp通过url选择语言,php,cakephp,localization,cakephp-1.3,Php,Cakephp,Localization,Cakephp 1.3,这里描述了我试图实现的目标 但是我不能让它工作 路由器配置如下所示: Router::connect('/registered/:language/:controller/:action/*', array('prefix' => 'registered', 'registered' => true, 'layout'=> 'registered'), array('language' => '[a-z]{3}')); 但是当我尝试进入www.example.com

这里描述了我试图实现的目标 但是我不能让它工作

路由器配置如下所示:

Router::connect('/registered/:language/:controller/:action/*',
 array('prefix' => 'registered', 'registered' => true, 'layout'=> 'registered'),
 array('language' => '[a-z]{3}'));
但是当我尝试进入
www.example.com/registered/cze/packages
时,我得到:

错误:找不到CzeControl。

我使用的是cake 1.3,而不是作为作者使用的cake 1.2,这可能是问题所在,但是为了让它工作,我需要做哪些更改

编辑:


此代码可以工作,当控制器中使用时会更改站点的语言,但我需要根据URL使其工作,因为
:action
段为空,所以URL
www.example.com/registered/cze/packages
与路由
/registered/:language/:controller/:action/*
。因此,URL通过标准路由,其中
registed
被识别为前缀,
cze
被识别为控制器


您还需要创建一个“较短的”
/registered/:language/:controller
路由来捕获“缩写的”URL。

URL
www.example.com/registered/cze/packages
与路由
/registered/:language/:controller/:action/*
不匹配,因为
:action
段为空。因此,URL通过标准路由,其中
registed
被识别为前缀,
cze
被识别为控制器

您还需要创建一个“较短的”
/registered/:language/:controller
路由来捕获“缩写的”URL

$this->Session->write('Config.language','cze');