Почему IP-геолокация - это плохо, и лучшая стратегия выбора правильного языка для ваших пользователей

Локализация в Интернете иногда может раздражать. К сожалению, с этой проблемой вы сталкиваетесь, только если путешествуете, живете за границей или в многоязычной стране. Это касается многих людей, но не обязательно тех, кто отвечает за веб-проект.

Похоже, что выбор по умолчанию заключается в выборе языка в зависимости от страны, в которой находится пользователь - это, в свою очередь, зависит от его IP-адреса. Хотя это работает, если вы англоговорящий человек, живущий в Пало-Альто, во многих других случаях он не работает.

Действительно, он основан на предположении, что в странах есть один язык, и все люди в указанной стране говорят на этом языке в качестве своего основного языка (или вообще). Это в корне неверно. Например, в США только около 80% населения использует английский в качестве первого языка, а около 13% - испанский. В Бельгии три официальных языка, а именно голландский (55% населения), французский (38%) и немецкий (0,4%).

Выбор по умолчанию не только дает неправильные ответы, но и слишком сложен. Чтобы реализовать его, вам, вероятно, придется интегрироваться с внешним API, что сделает ваше приложение более сложным, чем должно быть, и, возможно, менее отзывчивым. Все это для неоптимального решения.

HTTP охватывает вас

Протокол HTTP определяет заголовок Accept-Language для этой конкретной цели. С каждым запросом браузер отправляет список языков с дополнительными весами, представляющими предпочтения пользователя.

Вот несколько примеров из документации MDN:

Accept-Language: de
Accept-Language: de-CH
Accept-Language: en-US,en;q=0.5

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

Однако это не серебряная пуля, и ее следует использовать как последнее средство, когда у нас нет других способов узнать предпочтения пользователя в данном конкретном случае. Например, мой браузер работает на английском языке, но при входе на веб-сайт налоговой системы Бельгии я предпочитаю видеть веб-сайт на французском, моем родном языке.

Так как еще мы могли знать, какой язык выбрать?

Явный и неявный выбор

Конечно, если пользователь сделал явный выбор, выбрав язык в меню или в своих настройках, если он вошел в систему, то это должен быть язык, на котором они отображаются. Но есть также неявный выбор.

В большинстве случаев трафик идет откуда-то еще, а не потому, что посетитель вводит URL-адрес в адресной строке. Это может дать вам представление о том, какой язык предпочитает пользователь. Если я что-то гуглил и вижу результат на английском, я хочу видеть английскую версию, когда нажимаю на ссылку.

Некоторые веб-сайты скрывают язык в файлах cookie или в сеансе. Лучше поместить его прямо в URL. Таким образом, любая ссылка уже содержит неявный выбор. Результаты поиска приведут к правильной версии, как и ссылки в социальных сетях или на любых других страницах.

Резервная стратегия

Хорошо, но, возможно, кто-то действительно набирает доменное имя в адресной строке и изменил настройки браузера, чтобы отправить Accept-Language: * или что-то в этом роде. Что вы делаете тогда?

Может показаться заманчивым предположение на основе геолокации IP, но есть еще одно чрезвычайно простое решение. На самом деле настолько просто и очевидно, что я не понимаю, почему все больше веб-сайтов не используют его.

Просто спроси.

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

После всего этого все еще существует вероятность того, что вы сделали неправильный выбор. Упростите пользователям изменение языка. Нередко можно встретить веб-сайты, на которых действительно сложно найти языковое меню. Чаще всего потому, что меню написано на текущем языке (на котором пользователь может не говорить) без какой-либо визуальной подсказки. Используйте флажки или какой-нибудь значок, понятный каждому.

Таким образом, более разумный способ выбора языка выглядит следующим образом:

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

Если вам нравятся истории, подобные этой, подумайте о членстве в Medium и / или подписке.

дальнейшее чтение