Нужно ли делать принудительный редирект в зависимости от языка Accept-Language?

12
G
На сайте с 20.12.2011
Offline
0
1493

Нужно ли делать принудительный редирект в зависимости от языка Accept-Language передаваемого браузером?

допустим есть сайт site.com с двумя языками ru & en. На сайте есть переключатель языков который может вести на site.com/en & site.com/ru

как правильно поступить, с точки зрения SEO наверно больше всего интересно. Вариант с отдельными доменами для каждой языковой версии не рассматривается. Вариант с сабдоменами для разных языков рассматривается, но по моему не меняет сути вопроса. Итак, как правильно поступить в таких случаях (считаем что браузер передал Accept-Language en, но не суть):

  • Вход на сайт site.com, варианты:
    • показать контент на английском
    • редиректнуть на site.com/en (какой редирект использовать 301 or 302?)
    • ваш вариант
  • Вход на страничку site.com/some/page/with/needed/info
    • показать контент странички на английском
    • редиректнуть на site.com/en/some/page/with/needed/info (какой редирект использовать 301 or 302?)
    • ваш вариант
M
На сайте с 27.10.2006
Offline
111
#1

Мой браузер отдаст три языка — "en|lv|ru". Как вы узнаете который из них предпочтительнее?

Переключателя языков вполне хватает, если только не показывать русскому "Välj språk", а шведу — "Выберите язык".

Бесплатное хранилище данных (http://bit.ly/gJYy9Z) (5GB) с синхронизацией. По ссылке — бонус 500MB.
G
На сайте с 20.12.2011
Offline
0
#2

Maxoud, в вашем случае, на моем сайте, вы бы получили английский контент. Просто потому, что он в перечисленом списке первый (кстати в заголовке языки передаются через запятую). Но я совсем не уверен, что ваш браузер передает Accept-Language именно так, без quality value.

Я так понимаю, вы предложили свой вариант. Тем не менее он не отвечает на вопрос, что показывать посетителю (ну и ботам тоже) которые заходят просто на site.com, какой язык? Accept-Language именно для ответа на такой вопрос и был придуман(имхо. мб еще какие причины есть), поэтому вопрос остается открытым, какой вариант поведения сайта выбрать, после того как язык посетителя определен исходя из Accept-Language.

M
На сайте с 27.10.2006
Offline
111
#3

Я бы не редиректил. На морде оставил бы тот язык, на котором больше будут искать. Второй язык вынес бы на поддомен чтобы удобнее было вбивать его вручную в адресную строку (например, с визитки). Все остальное сделают ссылки.

И еще я бы записывал пользователю кукисы чтобы в следующий раз сразу направить его на «правильный» язык (если он пришел напрямую).

P.S. Я в самом деле забыл в каком виде $_SERVER["HTTP_ACCEPT_LANGUAGE"] отдает данные. Задал пяти браузерам один и тот же набор языков и протестил HTTP-заголовки. Все браузеры отдают разные "q", но предпочтительный язык у всех имеет наибольший "q". А Epiphany отдает голый список, без 'q': "en-us, en, ru, lv'.

webrock
На сайте с 05.04.2010
Offline
261
#4
gdeyaktoya:
считаем что браузер передал Accept-Language en, но не суть

вообще-то было бы круто если двиг определяет страну посетителя и отдаёт ему страницу на его языке... а так ... английский конечно же ...

шведы, немцы и практически все европейцы знают английский как украинцы русский.

Полный аудит сайтов. (/ru/forum/765361)
M
На сайте с 27.10.2006
Offline
111
#5
webrock:
двиг определяет страну посетителя и отдаёт ему страницу на его языке

Ага. Канадским французам отдавать английский? Валлонам — нидерландский? Финским шведам — финский?

webrock
На сайте с 05.04.2010
Offline
261
#6
Maxoud:
Ага. Канадским французам отдавать английский? Валлонам — нидерландский? Финским шведам — финский?

Нет. В каждой стране имеется свой официальный язык под номером один.

Английский язык считается международным языком, которым должен владеть почти каждый. 😂

M
На сайте с 27.10.2006
Offline
111
#7

Из Википедии:

Бельгия — официальные языки:

  • нидерландский (только во Фландрии и Брюсселе),
  • французский (только в Валлонии, кроме территории Немецкоязычного сообщества, и Брюсселе),
  • немецкий (только на территории Немецкоязычного сообщества)

Канада — официальные языки:

  • английский
  • французский

Кстати, я из Латвии, но предпочитаю общаться по-русски или английски, особенно в Интернете. И флаг моей страны не говорит ничего о моем языке.

Dwarfik
На сайте с 11.10.2008
Offline
152
#8

Согласен с webrock, имхо: правильнее определять регион посетителя и под него подбирать язык.

А если планируется покрыть всю Европу (или весь мир :) ) и попадаются страны с множеством языков и т.п. проблемами, то лучше просто сделать пользователю удобный интерфейс выбора языка.

6 тип эннеаграммы
G
На сайте с 20.12.2011
Offline
0
#9
Maxoud:
Я бы не редиректил. На морде оставил бы тот язык, на котором больше будут искать. Второй язык вынес бы на поддомен чтобы удобнее было вбивать его вручную в адресную строку (например, с визитки). Все остальное сделают ссылки.

т.е. вы предлагаете, если считать основную аудиторию сайта англоязычной, то сделать site.com англоязычным + к нему сабдомены типа ru.site.com. В общем то вариант. Тогда если посетитель с русского сайта захочет английскую версию, и клацнет по соответствующему переключателю - его переслать на site.com или на en.site.com?

куки - это само собой. речь о новых посетителях и ботах.

webrock:
вообще-то было бы круто если двиг определяет страну посетителя и отдаёт ему страницу на его языке... а так ... английский конечно же ...

в общем-то страну определять не такая уж большая проблема. Но неправильный подход, во-первых, по уже упомянутым причинам многоязычных стран, а во-вторых, представьте себе простую ситуацию, вас занесло в Таиланд отдохнуть/поработать, там вы подключили к интернету свой ноутбук и увидели весь интернет на тайском. Если же использовать вещи для того, для чего они предназначены, то таких проблем можно избегать. Например в данном примере ваш ноутбук (точней браузер на нем) скажет, что Accept-Language: ru (ну или какой там у вас) и увидите вы привычный вам интернет в независимости от места нахождения.

Maxoud:
P.S. Я в самом деле забыл в каком виде $_SERVER["HTTP_ACCEPT_LANGUAGE"] отдает данные. Задал пяти браузерам один и тот же набор языков и протестил HTTP-заголовки. Все браузеры отдают разные "q", но предпочтительный язык у всех имеет наибольший "q". А Epiphany отдает голый список, без 'q': "en-us, en, ru, lv'.

Интересно, а порядок перечисления языков в Epiphany соответствует тем приоритетам, которые определились с помощью q в остальных браузерах? Вообще по RFC, если q указан, то q=1

webrock
На сайте с 05.04.2010
Offline
261
#10
gdeyaktoya:


в общем-то страну определять не такая уж большая проблема. Но неправильный подход, во-первых, по уже упомянутым причинам многоязычных стран, а во-вторых, представьте себе простую ситуацию, вас занесло в Таиланд отдохнуть/поработать, там вы подключили к интернету свой ноутбук и увидели весь интернет на тайском. Если же использовать вещи для того, для чего они предназначены, то таких проблем можно избегать. Например в данном примере ваш ноутбук (точней браузер на нем) скажет, что Accept-Language: ru (ну или какой там у вас) и увидите вы привычный вам интернет в независимости от места нахождения.

Сайт многое не потеряет если webrock, находящийся в Тайланде откроет страницу на тайском и это не будет ошЫбкой. За то всем тайцам будет удобно и логически правильно.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий