cakePHP语言路由

cakePHP语言路由,cakephp,internationalization,Cakephp,Internationalization,我试图实现的是,我只能更改url中的语言前缀,但会遇到问题。。。 我的路线如下: $lang_regexp = implode('|', Configure::read('Config.languages')); Router::connect('/', array('controller' => 'languages', 'action' => 'choose')); Router::connect('/:lang/:controller/:action/*',

我试图实现的是,我只能更改url中的语言前缀,但会遇到问题。。。 我的路线如下:

$lang_regexp = implode('|', Configure::read('Config.languages'));
Router::connect('/', array('controller' => 'languages', 'action' => 'choose'));
Router::connect('/:lang/:controller/:action/*',
               array(),
               array('lang' => $lang_regexp));


// actual default page; can be any controller
    Router::connect('/:lang/pages/ajax_newsletter', array('controller' => 'pages', 'action' => 'ajax_newsletter'));
    Router::connect('/:lang/',
    array('controller' => 'pages', 'action' => 'index',  'home'),
    array('lang' => $lang_regexp));
    Router::connect('/:lang/:slug', array('controller' => 'pages', 'action' => 'pages'), array('lang' => $lang_regexp));
    Router::connect('/:slug', array('controller' => 'pages', 'action' => 'pages'), array('lang' => $lang_regexp));

    Router::connect('/:lang/special_offers', array('controller' => 'pages', 'action' => 'offers'));
    Router::connect('/:lang/special_offers/*', array('controller' => 'pages', 'action' => 'offers_city'));
    Router::connect('/:lang/news/*', array('controller' => 'pages', 'action' => 'news_article'));
    Router::connect('/:lang/news', array('controller' => 'pages', 'action' => 'news'));
    Router::connect('/:lang/:slug/:id/*', array('controller' => 'pages', 'action' => 'offers'), array('lang' => $lang_regexp));

    Router::connect('/cities/select', array('controller' => 'cities', 'action' => 'select'));
    Router::connect('/cities/select/*', array('controller' => 'cities', 'action' => 'select'));
我的语言切换器:

$this->html->link($this->html->image('flag_ru.gif',  array("alt"=>"", "width"=>"14px", "height"=>"12px", "title"=>"")), array("lang" => "rus"), array('escape' => false));

:lang/:slug
是菜单项,因此,如果我有类似于
localhost/eng/contact
的菜单,在语言更改后,我会得到
localhost/rus/pages/pages
。。。如何仅更改语言前缀?

您可以访问
$this->request->controller
$this->request->action
,以及
pass
named
以获取已传递和命名的参数

$this->html->link($this->html->image('flag_ru.gif',  array("alt"=>"", "width"=>"14px", "height"=>"12px", "title"=>"")), array("lang" => "rus", "controller" => $this->request->controller, "action" => $this->request->action), array('escape' => false));
比如说,你应该胡克

有关详细信息,请参阅。

本文:详细介绍了创建一种语言路径以及自动将语言添加到所有链接的情况