Так дело в том, что я уверен, что у 99% таиландцев браузер передаст Accept-Language: th и они будут себе видеть контент на тайском. Хоть мы уже и отошли немного от стартовой темы, но я не пойму, откуда такое навязчивое желание изобрести велосипед?
The Accept-Language request-header field is similar to Accept, but restricts the set of natural languages that are preferred as a response to the request
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
Maxoud, в вашем случае, на моем сайте, вы бы получили английский контент. Просто потому, что он в перечисленом списке первый (кстати в заголовке языки передаются через запятую). Но я совсем не уверен, что ваш браузер передает Accept-Language именно так, без quality value.
Я так понимаю, вы предложили свой вариант. Тем не менее он не отвечает на вопрос, что показывать посетителю (ну и ботам тоже) которые заходят просто на site.com, какой язык? Accept-Language именно для ответа на такой вопрос и был придуман(имхо. мб еще какие причины есть), поэтому вопрос остается открытым, какой вариант поведения сайта выбрать, после того как язык посетителя определен исходя из Accept-Language.
Так дело в том, что я уверен, что у 99% таиландцев браузер передаст Accept-Language: th и они будут себе видеть контент на тайском. Хоть мы уже и отошли немного от стартовой темы, но я не пойму, откуда такое навязчивое желание изобрести велосипед?
RFC 2616 section 14:
Я бы не редиректил. На морде оставил бы тот язык, на котором больше будут искать. Второй язык вынес бы на поддомен чтобы удобнее было вбивать его вручную в адресную строку (например, с визитки). Все остальное сделают ссылки.
т.е. вы предлагаете, если считать основную аудиторию сайта англоязычной, то сделать site.com англоязычным + к нему сабдомены типа ru.site.com. В общем то вариант. Тогда если посетитель с русского сайта захочет английскую версию, и клацнет по соответствующему переключателю - его переслать на site.com или на en.site.com?
куки - это само собой. речь о новых посетителях и ботах.
вообще-то было бы круто если двиг определяет страну посетителя и отдаёт ему страницу на его языке... а так ... английский конечно же ...
в общем-то страну определять не такая уж большая проблема. Но неправильный подход, во-первых, по уже упомянутым причинам многоязычных стран, а во-вторых, представьте себе простую ситуацию, вас занесло в Таиланд отдохнуть/поработать, там вы подключили к интернету свой ноутбук и увидели весь интернет на тайском. Если же использовать вещи для того, для чего они предназначены, то таких проблем можно избегать. Например в данном примере ваш ноутбук (точней браузер на нем) скажет, что Accept-Language: ru (ну или какой там у вас) и увидите вы привычный вам интернет в независимости от места нахождения.
P.S. Я в самом деле забыл в каком виде $_SERVER["HTTP_ACCEPT_LANGUAGE"] отдает данные. Задал пяти браузерам один и тот же набор языков и протестил HTTP-заголовки. Все браузеры отдают разные "q", но предпочтительный язык у всех имеет наибольший "q". А Epiphany отдает голый список, без 'q': "en-us, en, ru, lv'.
Интересно, а порядок перечисления языков в Epiphany соответствует тем приоритетам, которые определились с помощью q в остальных браузерах? Вообще по RFC, если q указан, то q=1
Maxoud, в вашем случае, на моем сайте, вы бы получили английский контент. Просто потому, что он в перечисленом списке первый (кстати в заголовке языки передаются через запятую). Но я совсем не уверен, что ваш браузер передает Accept-Language именно так, без quality value.
Я так понимаю, вы предложили свой вариант. Тем не менее он не отвечает на вопрос, что показывать посетителю (ну и ботам тоже) которые заходят просто на site.com, какой язык? Accept-Language именно для ответа на такой вопрос и был придуман(имхо. мб еще какие причины есть), поэтому вопрос остается открытым, какой вариант поведения сайта выбрать, после того как язык посетителя определен исходя из Accept-Language.