Маршруты локализации Cakephp - PullRequest
0 голосов
/ 02 июля 2010

Мои файлы локализации (.po) работают, если я меняю язык по умолчанию, но я не могу заставить работать маршруты, вот что у меня есть:

Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));
Router::connect('/login/*', array('controller' => 'users', 'action' => 'login'));
Router::connect('/logout/*', array('controller' => 'users', 'action' => 'logout'));
Router::connect('/register/*', array('controller' => 'users', 'action' => 'register'));
Router::connect('/:lang/:controller/:action/*', array('lang' => 'en'), array('lang' => 'en|fr'));

Но когда я пытаюсь:domain.com/fr/login, торт ищет контроллер "fr".

Я использую эту функцию в AppController beforeFilter для переключения между языками:

    function setLanguage() {
        if(!isset($this->params['lang']))
        {
            $this->params['lang'] = 'en';
        }
        $lang = $this->params['lang'];
        App::import('Core', 'i18n');
        $I18n =& I18n::getInstance();
        $I18n->l10n->get($lang);
        foreach (Configure::read('Config.languages') as $lang => $locale)
        {
            if($lang == $this->params['lang'])
            {
                $this->params['locale'] = $locale['locale'];
            }
        }
    }

Cheers,Nicolas.

1 Ответ

3 голосов
/ 02 июля 2010

У вас нет контроллера входа.Таким образом, ваш нижний маршрут не совпадает, и Cake затем пытается установить значение по умолчанию, ища контроллер fr.

Маршруты не взаимодействуют так, как вы ожидаете:

/ login - будет соответствовать вашему второмуroute

/ fr / users / login - соответствует вашему последнему маршруту.

/ fr / login - НЕ объединяет два маршрута.Вам нужно явно сделать такой маршрут.

...