Как лучше отслеживать то, откуда на страницу пришел клиент?
Поле Referer заголовка HTTP-запроса
Наверное он имеет в виду всё же source IP.
А что это такое?
Если ты хочешь определить, на каком языке показывать контент, то браузеры посылают соответствующую инфу в Accept-Language
На клиенте это можно будет сделать?
Клиенты-то эту инфу и посылают
Можно в ней прописать код, который определит значение этого поля и сделает редирект в зависимости от него?
Или это только на сервере можно сделать?
Короче, может ли клиент сам определить свои настройки?
HTTP_HEADERS вроде во всех языках есть, и под CGI, и под модули.
Гугл, кстати, с факультетских тачек на ВМК отправляет на
Гугл определяет не по заголовкам клиента, а по IP блоку. Почему-то все новые блоки он считает в .de. Если написать им письмо, то они быстро исправляют.
это и написал на его основе следующее:
Под ИЕ и под Мозиллой оно вроде как работает.
А вот под Оперой не хочет - у нее используемые мною переменные либо не определены, либо стоят в "en".
Хотя в настройках у меня стоит русский
Я нашел в нете
var lang = "ru";
var ul = (navigator.userLanguage?navigator.userLanguage.toLowerCase:"").indexOf(lang) >= 0;
var sl = (navigator.systemLanguage?navigator.systemLanguage.toLowerCase:"").indexOf(lang) >= 0;
var ll = (navigator.language?navigator.language.toLowerCase:"").indexOf(lang) >= 0;
var bl = (navigator.browserLanguage?navigator.browserLanguage.toLowerCase:"").indexOf(lang) >= 0;
location.replace(ul || sl || ll || bl ? "ru.htm" : "en.htm");
Под ИЕ и под Мозиллой оно вроде как работает.
А вот под Оперой не хочет - у нее используемые мною переменные либо не определены, либо стоят в "en".
Хотя в настройках у меня стоит русский
Потому что это лажа. Есть один и только один надежный способ узнать, на каком языке клиент предпочитает общаться: это читать на серверной стороне заголовки HTTP-запроса. В данном случае - поле Accept-Language. Как уже написал Gadfather.
Откуда клиент берет этот Accept-Language? По IP компа что ли?
И что делать, если использование серверного программирования невозможно?
> А если Accept-Language передается клиентом, то почему нельзя узнать его же на самом клиенте
можно. Но каждый броузер делает это по-разному, с чем ты уже столкнулся. Хочешь - пиши отдельные скрипты под четыре-пять популярнейших броузеров.
но не работает, если пробовать локально
Мб у меня опера глючит - я ее пару месяцев как не обновлял
Все-таки, почему все броузеры на сервер выдают правильную информацию о своей языковой принадлежности, а локально ведут себя как хотят?
На сервер они посылают стандартный http заголовок, а но локальное определение своей языковой принадлежности никаких стандартов нет.
Тогда откуда утверждение, что локально определять язык менее надежно, чем на сервере, который принял и прочитал http-заголовок, переданный этим же самым броузером?
А на сервере всё просто. Либо клиент (браузер) отправил в http запросе желаемый язык, либо нет. И никаких проблем.
То есть передача данных на сервер для броузера - стандарт, который они неуклонно выполняют?
Post deleted by
Иначе они не зайдут ни на один сайт.Не надо сгущать краски %)
Но сейчас очень трудно найти браузер, который не отдаёт желаемый язык. Другое дело, что далеко не у всех он настроен правильно, т.е. какая-нибудь Opera по умолчанию пишет желаемым языком английский, а у большинства юзеров руки не доходят поменять это умолчание.
Или про оба варианта?
Ты вообще понимаешь как происходит процесс работы сервера?
Ты вообще понимаешь как происходит процесс работы сервера?
Считал, что понимаю, но сейчас уже не уверен...
Нет, просто броузер вообще не обязан предоставлять локальным скриптам информацию о языке. Собственно, он даже не обязан эти скрипты поддерживать. Кстати, а как ты собираешься работать с теми, кто отключает скрипты?
Если скрипты не сработают - у чела будет выбор
Оставить комментарий
durka82
Чтобы перенаправлять его соответственно...Пока интересует определение русский/английский.
Мб есть уже готовые разработки на этот счет?