symfony2 язык ограничен хостом (редирект с сервиса?)

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

У меня возникают проблемы с выяснением, как перенаправить пользователей с одного языка на другой
например:
если site.com имеет только язык (site.com/de)
и кто-то пытается сразу перейти на site.com/en, я хочу сразу же перенаправить его на site.com/de.

или как ограничить префикс локали на основе хоста (должен быть динамическим)?

я думаю, что есть способ сделать это от сервисного слушателя, но я не знаю, что передать ему, чтобы иметь возможность перенаправить с него.

2

Решение

Прежде всего, я думаю, что такого рода ограничения должны быть предоставлены конфигурацией сервера httpd. Для меня это место, где вы должны разрешить / запретить доступ на основе IP-адреса удаленного хоста, а затем перенаправить в разрешенное пространство имен сайта.

Отвечая на ваш вопрос попробуйте использовать пакет JMSI18nRoutingBundle, или похожие. В этом случае вы можете перегрузить класс Router / DefaultLocaleResolver.php, заменив его в конфигурации (jms_i18n_routing.router.class).

В вашем перегруженном маршрутизаторе добавьте разрешение на основе хоста в функция resolLocale проверяя $request->getClientIp();, Таким образом, не только главная страница будет перенаправлена ​​на «правильную» локаль, но и на любую ссылку в вашем приложении.

Я думаю, что это самый чистый способ реализовать это.

Удачи!

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]