【问题标题】:cakePHP language routingcakePHP语言路由
【发布时间】:2012-09-03 14:15:29
【问题描述】:

我想要实现的是我只能更改 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... 如何仅更改语言前缀?

【问题讨论】:

    标签: cakephp internationalization


    【解决方案1】:

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

    $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));
    

    例如应该有效。

    详情请见here

    【讨论】:

      【解决方案2】:

      这篇文章:http://nuts-and-bolts-of-cakephp.com/2008/11/28/cakephp-url-based-language-switching-for-i18n-and-l10n-internationalization-and-localization/ 正好解决了创建一种语言路径以及自动将语言添加到所有链接的这种情况。

      【讨论】:

        猜你喜欢
        • 2013-12-19
        • 2016-05-11
        • 1970-01-01
        • 2017-03-29
        • 2012-02-22
        • 2015-09-30
        • 2013-02-15
        • 2013-07-10
        • 1970-01-01
        相关资源
        最近更新 更多