I18n веб-сайта: как мне определить язык? - PullRequest
4 голосов
/ 19 июля 2010

Я работаю над веб-сайтом, который нуждается в небольших интернационализациях (английском, французском и немецком), и я хочу выяснить, откуда приходит пользователь, чтобы я знал, что отображать.Я думаю, что правильный способ сделать это - проверить заголовок «HTTP_ACCEPT_LANGUAGE», чтобы узнать язык № 1, который запрашивает пользователь (и можно с уверенностью предположить, что у всех пользователей в Германии есть браузеры, которые по умолчанию запрашивают DE и т. Д.).

Это правильно?Или я должен сделать что-то еще (надеюсь, ничего смешного, например, попытаться выяснить их страну по их IP) ...?

спасибо-- Эрик

Ответы [ 3 ]

9 голосов
/ 20 июля 2010

Если вы выберете самый популярный на данный момент выбор - geoIP - без дальнейшего рассмотрения, вы не окажете вашим пользователям большую услугу.

Языки и страны не пересекаются.Что вы собираетесь делать с пользователями со швейцарских IP-адресов?Бельгия?Канада?Если вы будете использовать язык большинства в каждом случае, вы будете раздражать постоянных посетителей, которые оказываются частью крупных языковых меньшинств: их будут встречать на «неправильном» языке каждый раз, даже если сайт доступен вих предпочитаемый язык.То же самое относится и к экспатриантам, и, как показывает опыт, меня очень смущает то, что меня встречают, скажем, по-шведски, только потому, что я путешествую в Швецию.(И даже на больших сайтах это не так. На днях я прибыл в лондонский аэропорт Ванкувера, и Google переключил меня на fr_CA.) Не забывайте, что большое количество людей говорят на многих языках или не являются носителями языка большинства своей страны.места жительства.

Вот рекомендации, которым я следую:

  1. Сначала проверьте, что пользователь говорит о своем вероятном выборе.Самыми простыми способами являются:
    • Анализ информации о языке / культуре из строки агента пользователя HTTP ( примеры для Firefox ).Это говорит вам кое-что о версии ОС, с которой они работают, и является очень хорошим показателем предпочтений.Конечно, они могут подделывать пользовательские агенты, но если они делают это, они вряд ли будут удивлены тем, что получают неправильные предварительные настройки.
    • Заголовок Accept-Language HTTP(более низкий приоритет, поскольку вы, скорее всего, увидите здесь больше «en», чем у реальных пользователей с английским языком в качестве предпочтения ОС).
  2. Второй, сохранить пользователяпредпочтение.Если они войдут в систему, спросите их и сохраните как опцию.Если нет, установите cookie (с разумной настройкой срока действия).Таким образом, они будут приятно удивлены, когда вернутся.
  3. Используйте GeoIP только в качестве последнего средства.
0 голосов
/ 19 июля 2010

Я бы проверил как заголовок принимаемого языка, так и страну происхождения IP-адреса посетителя.Если заголовок accept language отличается от английского (вероятно, наиболее часто используемый параметр по умолчанию), используйте его для установки языка по умолчанию.Если принимаемый язык английский, используйте страну происхождения, чтобы установить язык по умолчанию.Я думаю, что это даст вам более обоснованное предположение о родном языке посетителей.

0 голосов
/ 19 июля 2010

Вы в значительной степени ответили на свой собственный вопрос - вы можете использовать этот заголовок ИЛИ просто geoip (он очень прост в использовании)

Скачать с: http://geolite.maxmind.com/download/geoip/api/php/

Пример кода:

include("geoipcity.inc");
include("geoipregionvars.php");
$gi = geoip_open("GeoLiteCity.dat", GEOIP_STANDARD);
$record = geoip_record_by_addr($gi, $user_ip);
echo "The users country code is:" . $record->country_code;
geoip_close($gi);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...