0

What I'm trying to achieve is that I can change only language prefix in the url, but getting problems... There is my routes:

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

my language switcher:

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

:lang/:slug is menu entry so if I have menu like localhost/eng/contact after language change I get localhost/rus/pages/pages... How to change only language prefix?

4

2 に答える 2

0

この記事: http://nuts-and-bolts-of-cakephp.com/2008/11/28/cakephp-url-based-language-switching-for-i18n-and-l10n-internationalization-and-localization/ 1 種類の言語ルートを作成し、その言語をすべてのリンクに自動的に追加するという状況とまったく同じです。

于 2012-12-13T20:41:22.713 に答える
0

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

たとえば、動作するはずです。

詳しくはこちらをご覧ください。

于 2012-09-04T00:02:49.197 に答える