Обновление:CakePHP i18n/i10n Маршрутизация
Я использую общий CakePHP LIB через несколько приложений (со всеми вытекающими из них живет в субдоменов). Они не все вложены одинаково; так, например, в файловой системе я мог бы:
/foo
.htaccess
/1.0 (app)
/1.1 (app)
/1.2 (app)
...
/bar
.htaccess
/1.0 (app)
/1.1 (app)
/1.2 (app)
...
Если .htaccess в каждом только определяет, какие приложения по умолчанию, что запросы направляются в этой вложенной папке, в то время как они все еще доступны по прямой url (например, /foo/1.0/...
).
Похоже, что если я использую прямой URL (например, не перезаписанный .htaccess), он правильно распознает маршруты, но если URL-адрес переписан на .htaccess, это не так; он будет вызывать AppError :: error404() с выходом в конце вопроса. Мне это не кажется правильным ... если у кого-то есть понимание, это было бы потрясающе.
Эй, ребята,
Я использую CakePHP 1.3 и имеющий проблемы маршрутизации. Суть концепции заключается в следующем:
- Я хочу использовать «en_us» стиль i18n/i10n, а не просто «ан»
- Я не использую встроенный в i18n из-за требований к иметь несколько языков отображение страниц с локализованными просмотрами (
views/:i18n/...
) и другими в общие взгляды с призывами__()
Итак, у меня есть маршруты, установленные вверх, как так:
$sI18nFormat = '/[a-z]{2}_[a-z]{2}/';
Router::connect('/:i18n/:controller/:action',
array('controller' => ':controller', 'action' => ':action', 'i18n' => ':i18n'),
array('i18n' => $sI18nFormat));
Router::connect('/:i18n/:controller',
array('controller' => ':controller', 'action' => 'index', 'i18n' => ':i18n'),
array('i18n' => $sI18nFormat));
Router::connect('/:controller/:action',
array('controller' => ':controller', 'action' => ':action', 'i18n' => 'en_us'),
array('i18n' => $sI18nFormat));
Router::connect('/:controller',
array('controller' => ':controller', 'action' => 'index', 'i18n' => 'en_us'),
array('i18n' => $sI18nFormat));
где о Очевидно, что маршруты зеркалируются, за исключением того, что один имеет динамический параметр i18n
, а другой - статический.
Проблема возникает с использованием определенных значений для :i18n
- например, en_us
хорошо, но fr_fr
кажется, Cake ищет FrController
(не FrFrController
) - по-видимому, потому, что он пытается работать немного магии с встроенным i18n fr
префикс.
В качестве примера, вот что AppError::error404
Дано:
Array
(
[className] => FrController
[webroot] => /path/to/webroot
[url] => _fr
[base] => /path/to/webroot
)
Можно ли а) сделать торт это остановить, так что мои маршруты работают, как и ожидалось, или б) сказать торт, какой формат я хочу, чтобы мой i18n/i10n, поэтому он не пытается сделать это по-своему?
Любые мысли будут оценены.
BTW, это «i18n» (eye-18-ru) и * «l10n» (ell-10-en) *. :) – deceze
haha, тоже правда ... длинный день. ;) – mway