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 который, если находит соответствующий маршрут, может вернуть контроллер и действие, которое должно быть вызвано. Это позволяет вам запускать собственный код и определять, какой контроллер / действие вы хотите вызвать. См. Раздел " Логика маршрута лямбда / обратный вызов " в руководстве.

Другие вопросы по тегам