то, что я пытаюсь достичь, описано здесь http://nuts-and-bolts-of-cakephp.com/2008/11/28/cakephp-url-based-language-switching-for-i18n-and-l10n-internationalization -and-localization / но я не могу заставить его работать.
Конфигурации маршрутизатора выглядят следующим образом:
Router::connect('/registered/:language/:controller/:action/*', array('prefix' => 'registered', 'registered' => true, 'layout'=> 'registered'), array('language' => '[az]{3}'));
но когда я пытаюсь перейти на www.example.com/registered/cze/packages
я получаю:
Error: CzeController could not be found.
Я использую cake 1.3, а не 1.2 как автора, это может быть проблема, но что мне нужно изменить, чтобы это работало?
Редактировать:
$this->Session->write('Config.language','cze');
Этот код работает и при использовании в контроллере меняет язык сайта, но мне нужно заставить его работать в соответствии с URL-адресом
URL www.example.com/registered/cze/packages
не соответствует маршруту /registered/:language/:controller/:action/*
, так как сегмент :action
пуст. Следовательно, URL-адрес попадает на стандартный маршрут, где registered
признается префиксом и cze
в качестве контроллера.
Вам нужно будет создать маршрут «более короткий» /registered/:language/:controller
чтобы поймать «сокращенные» URL-адреса.