Как стать автором
Обновить

Комментарии 22

А зачем выносить $lang_code в GET?
Почему не передать ее с помощью proxy_set_header?
Конфиг будет гораздо проще.
PS А в целом отличная статья, спасибо.
У нас исторически так был настроен back-end.
Если передавать через proxy_set_header, то нижняя часть конфигурации будет выглядеть вот так:

   proxy_set_header lang_code $lang_code;
   proxy_pass      http://back-end/$rest_uri$is_args$args;
   include         /etc/nginx/proxy.conf;

Ну и надо настроить back-end чтобы брал языковую настройку из заголовка запроса. :-)
Больше нравится вариант sitename.com, sitename.ru etc
Это получается два разных сайта со всеми вытекающими для поисковиков и статистики посещений.
Это же прописывается для роботов и в GA. Не скажу как именно но у нас в awdit.com так и сделано.
А какие там вытекающие?
Неверное, никаких, если вы Samsung или Subaru, например. А вот если ваш сайт скромный, то вам будет затратно продвигать 2 разных с точки зрения поисковой машины сайта. Впрочем, я не специалист в этой области, знающие меня поправят.
Сертификаты, опять же. И самая главная проблема — кто-то займёт ваше имя в домене рынка, на который вы собрались выходить.
НЛО прилетело и опубликовало эту надпись здесь
I know ©
В статье только return и set в if, причем вполне по делу. Так что всё ок.
Что-то поломалось? Или это такая логика работы — при переключении языка страница обновляется, а URL — нет?
Клац
Язык — русский, URL — en, текст — русский
Да, такая логика. Переключение языков реализовано не правильно, все будет поправлено. Хороший анти-пример, кстати, переключение языков с помощью AJAX делать нельзя.
Скажу больше. При переключении на английский с помощью дропдауна внизу страницы, все равно в пути url язык указан русский.
Да, я в курсе :-) Все поправим.
НЛО прилетело и опубликовало эту надпись здесь
Использование GeoIP для выбора языка — вопрос спорный.
Конкретно у меня GeoIP прикручено и передается на back-end в заголовке запроса для дальнейшего выбора тарифной зоны. Т.е. от положения пользователя зависит валюта и стоимость услуг, но не язык интерфейса.
Вот часть фрагмента из proxy.conf

proxy_set_header GEOIP_COUNTRY_CODE $geoip_country_code;
НЛО прилетело и опубликовало эту надпись здесь
Ну может вы осознанно поставили английский язык в браузере в качестве основного? :-)
Сайт не должен решать за пользователя, какой язык ему нужен. Геолокация полезна для выдачи релевантной информации, привязанной к месту нахождения пользователя, и для различных финансовых параметров, типа валюты, маски налогов и стоимости, если речь идет об интернет-магазинах.
А не слишком много if в конфиге nginx-а? Не будет это притормаживать? Понимаю, что nginx очень быстр, но всё же не рекомендуют: wiki.nginx.org/IfIsEvil
Хотя, с другой стороны, альтернатива — реализовывать в коде приложения, где это может быть гораздо сложнее/затратнее…
(упс, выше уже написали...)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий