По будням с 7:00 до 17:00
По будням с 7:00 до 17:00
  • /
  • /

Как настроить определение языка пользователя по IP и зачем это нужно

Большинство мультиязычных сайтов используют технологию автоматического определения языка пользователя. Выглядит это так: пользователь, заходя на ресурс, видит перед собой страницы с контентом на родном для него языке. Самый простой метод определения – по IP каждого посетителя. Технология простая и во многом удобная для посетителей. Но в ней есть свои нюансы.

Особенности, преимущества и недостатки определения языка по IP

Использование IP или, точнее, GeoIP – наиболее доступный и простой способ. Но в то же время часто он бывает неточным. Многие пользователи жалуются: когда они находятся за пределами России, то первоначально все сайты загружаются на языке страны, в которой они пребывают. Это дико неудобно, и самое интересное, что этим грешат и такие крупные площадки, как Facebook.

Подобная проблема наблюдается, если пользователь заходит на ресурс через прокси-сервер или VPN – то есть, выходит в Интернет не с российского IP. В такой ситуации GeoIP полностью бесполезен – ведь будет считываться информация о местонахождении прокси либо VPN-сервера. Аналогичная ситуация – если провайдер обеспечивает доступ клиентов через NAT (а это происходит все чаще, так как со свободными IPv4 адресами сейчас очень большие проблемы).

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

  • легкое применение, возможность реализации на разных языках
  • если не брать во внимание описанные выше проблемы – высокая точность определения;
  • высокая (мгновенная) скорость – для получения результата достаточно одного запроса к базе.
К недостаткам метода определения языка по IP относят:

  • необходимость постоянно актуализировать базу IP;
  • невозможно проверить, насколько достоверны данные;
  • данные IP по России не всегда точные.

Как настроить определение языка сайта по IP

Первый и самый простой способ – использование бесплатной библиотеки. К примеру, для сайтов на PHP можно применять расширение GeoIP. По ссылке доступна подробная инструкция по установке и другие рекомендации.

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

$_SERVER["HTTP_ACCEPT_LANGUAGE"
Он отвечает за передачу серверу данных о языке пользователя, возвращая значение ru, en или любое другое. Вот так примерно выглядят эти данные:

ru-RU,ru;q=0.8,
en-US;q=0.5,
en;q=0.3

Первое значение – язык, второе – регион, а коэффициент указывает на приоритет (то, какой язык пользователь предпочитает больше). Благодаря подобной логике, например, стартовая страница Google для русскоязычного пользователя, который находится в Украине, загрузится на русском, но с сервера Google.com.ua.

Для определения языка можно использовать следующий код:

<?php<br >
preg_match_all('/([a-z]{1,8}(?:-[a-z]{1,8})?)(?:;q=([0-9.]+))?/', strtolower($_SERVER["HTTP_ACCEPT_LANGUAGE"]), $matches); // вычисляем соответствия с массивом $matches<br >
$langs = array_combine($matches[1], $matches[2]); // Создаём массив с ключами $matches[1] и значениями $matches[2]<br >
foreach ($langs as $n => $v)<br >
$langs[$n] = $v ? $v : 1; // Если нет q, то ставим значение 1<br >
arsort($langs); // Сортируем по убыванию q<br >
<br >
echo key($langs); // Выводим язык по умолчанию<br >
?></br ></br ></br ></br ></br ></br ></br ></br >

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

// Создаем массив с адресами для каждого языкового кода<br >
$sites = array(<br >
"ru" => "http://mysite.com/",<br >
"en" => "http://en.mysite.com/",<br >
"es" => "http://es.mysite.com/",<br >
"fr" => "http://fr.mysite.com/",<br >
);<br >
<br >
// получаем язык<br >
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2); // вырезаем первые две буквы<br >
<br >
// проверяем язык<br >
if (!in_array($lang, array_keys($sites))){<br >
$lang = 'ru';<br >
}<br >
<br >
// перенаправление на субдомен<br >
header('Location: ' . $sites[$lang]);</br ></br ></br ></br ></br ></br ></br ></br ></br ></br ></br ></br ></br ></br ></br ></br ></br >

Чтобы застраховаться от возможных ошибок в определении, предусматривайте легкую и понятную возможность ручной смены языкового интерфейса – чтобы даже на сайте с иероглифами русскоязычный посетитель разобрался, как сменить язык.
Автор: Евгений Калатушкин
Задайте свой вопрос удобным способом
Цель SEO-продвижения – постоянное привлечение целевых посетителей на сайт. Для этого необходимо оставаться в ТОПе поисковой выдачи по ключевым запросам. Поисковое продвижение – это изменение сайта по нескольким видам факторов, в результате которого его позиции улучшаются в выдаче поисковых систем. Преимущества SEO-продвижения:
  • качественно проведенная оптимизация дает долговременный результат – после завершения активных действий позиции не падают;
  • из поиска приходит максимально целевая аудитория – люди, заинтересованные в конкретной информации, продукте или услуге;
  • используя поисковые запросы разной частотности, можно охватить максимум целевой аудитории;
  • SEO – самый недорогой метод рекламы сайта. Значительные финансовые вложения нужны на начальных этапах оптимизации сайта.
Недостатки SEO-оптимизации:
  • результаты продвижения появляются не сразу: от 2 до 12 месяцев. Нижняя граница обусловлена техническими задержками в работе поисковых алгоритмов, а верхняя наличием высокой конкуренции в продвигаемой отрасли;
  • для некоторых сайтов оптимизация не приносит результата из-за уникальных особенностей (вид «движка», использование flash-технологий, отсутствие контента, жёсткий брендбук касательно вида сайта);
  • поисковые системы не всегда корректно ранжируют сайты клиентов, а динамика роста может быть ниже прогнозируемой;
  • частое низкое качество результатов от работы компаний и специалистов, в виду высокой сложности процессов продвижения;

Статьи, которые могут быть интересны: