kohana3.2 маршрутизация с поддоменами - мультиязычность
У меня небольшая проблема с маршрутизацией в Kohana 3.2. Я хочу создать простой блог с поддержкой нескольких языков.
Я хочу создать такие ссылки:
- pl.yourwebsite.com/kontakt
- en.yourwebsite.com/contact
- xx.yourwebsite.com/sometranslation контроллера выше
Я установил простой контроллер для контакта и маршрутов, но когда дело доходит до маршрута, я должен установить статический маршрут, что является довольно плохим решением. Например:
для pl lang:
Route::set('kontakt', 'kontakt(/<action>(/<id>(/<id2>(/<id3>))))')
->defaults(array(
'controller' => 'contact',
'action' => 'index',
));
Работает когда использую domain.com/contact
а также domain.com/kontakt
, но когда у меня будет 20+ контроллеров и 3 языка; это будет более 60 маршрутов == плохое решение.
Я ценю любую помощь.
1 ответ
Вы можете по крайней мере сгруппировать перевод отдельных страниц вместе, но для этого вам все равно потребуется по крайней мере один маршрут на страницу.
В этом примере используется регулярное выражение для соответствия <page_name>
часть URL:
Route::set('kontakt', '<page_name>(/<action>(/<id>(/<id2>(/<id3>))))',
array('page_name' => '(contact|kontakt|contatto)'))
->defaults(array(
'controller' => 'contact',
'action' => 'index',
));
Также учтите, что вы можете указать функцию обратного вызова при установке Route
который, если находит соответствующий маршрут, может вернуть контроллер и действие, которое должно быть вызвано. Это позволяет вам запускать собственный код и определять, какой контроллер / действие вы хотите вызвать. См. Раздел " Логика маршрута лямбда / обратный вызов " в руководстве.