как заставить страну пользователя использовать его язык - PullRequest
0 голосов
/ 09 января 2011

я слышал о многих способах, которые зависят от файлов, таких как CSV или базы данных но я думаю, что загрузка дополнительной базы данных на мой сайт для этого не очень хорошая идея я хорошо отношусь к внешним поставщикам использует внешний сайт, который дает вашу страну по IP-это хороший способ или это не очень хорошо, потому что сервер будет ждать ответа внешнего провайдера, и это замедлит работу сайта?

Ответы [ 4 ]

1 голос
/ 09 января 2011

Я бы не стал использовать GeoIP для этого - слишком много сценариев, когда он дает сбой или дает неправильные результаты.

Как говорит @Paul, заголовок HTTP Accept-Language определяет языковые предпочтения пользователя, определенные в браузере. Вы можете посмотреть, на что настроен ваш браузер, посетив Определение языка браузера .

Для реального работающего примера см. Parse Accept-Language для определения языка пользователя .

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

Также см. Модуль Apache mod_negotiation для выбора содержимого.

1 голос
/ 09 января 2011

На самом деле это не очень хорошая идея, чтобы в любом случае основывать выбор языка на IP-адресе. Что если я американец из Германии и не очень хорошо говорю по-немецки? Ваш самый совместимый со стандартами способ (я думаю) будет состоять в том, чтобы проанализировать заголовок Accept-Language веб-запроса и использовать его для установки значения по умолчанию для пользователя, но всегда предоставляют им способ переопределить значение по умолчанию и выберите язык (который вы затем сохраните в настройках сеанса или пользователя)

1 голос
/ 09 января 2011

Я бы использовал переменную PHP $ _ SERVER ['HTTP_ACCEPT_LANGUAGE'] , которая в моем случае содержит это значение sk, cs; q = 0,8, en-us; q = 0,5, en; д = 0,3 .
Это означает, что мой браузер говорит на словацком.

Я думаю, этот вариант лучше.Только представьте, что вы англичанин, но вы где-то в отпуске.
Вы используете свой ноутбук там ... Ваш IP-адрес будет сообщать вашему серверу, что вы находитесь в Хорватии, и вы хотели бы получить контент в ихязык ... Но ваш браузер все еще говорит, что вы англоговорящий человек ... Есть разница;)

1 голос
/ 09 января 2011

Посмотрите на это: http://www.rubyquiz.com/quiz139.html

...