Моя цель - распознать браузер локального пользователя и автоматически установить язык.Автоматическое определение локали пользователя
Затем разрешите пользователю изменять язык и хранить его на других страницах.
В то время я установил маршруты таким образом:
# homepage not localized: load the homepage with default language
index_not_localized:
path: /
defaults: { _controller: "AcmeSiteBundle:Default:index", _locale: %locale% }
acme_site:
resource: "@AcmeSiteBundle/Controller/"
type: annotation
prefix: /{_locale}
defaults: { _locale: %locale% }
requirements:
_locale: %route_locale_requirements%
Когда пользователь заходит на страницу example.com без указания языка в локальном маршруте устанавливается по умолчанию, а страница есть коммутатор, который позволяет вам сменить язык:
<ul class="dropdown-menu">
{% for locale in ['en', 'it'] %}
<li>
<a href="{{ path('homepage', {'_locale': locale}) }}">
</li>
{% endfor %}
</ul>
Как мне сделать то, что я хочу?
Мне нужно создать слушателя? Я поставил местную сессию?
Я в замешательстве, я прочитал несколько ответов, но не нашел четкого ответа!
Что-то вроде этого: http://symfony.com/doc/current/cookbook/session/locale_sticky_session.html –
Да, спасибо, но отвечает только на часть проблема. Как автоматически определить локаль пользователя? –
Вы не должны этого делать, даже если вы реализовали обнаружение по IP, потому что англоговорящий может открыть ваш сайт из России. Просто сделайте переключатель языка. –