Как выбрать язык пользователя

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

Несколько вариантов, на которые я смотрю:

  • Использование PHP GeoIP расширение, которое использует базу данных Maxminds (бесплатная версия)
  • Доступ к языку пользователя из браузера с помощью http_negotiate_language

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

У вас есть другие предложения?

5 ответов

Взято из каркаса MicroMVC. Далее выполняется поиск файла cookie, который может быть установлен селектором языка Javascript - и, если он не найден, он использует настройку, которую отправляет браузер пользователя.

// Get locale from user agent
if(isset($_COOKIE['lang']))
{
    $preference = $_COOKIE['lang'];
}
else
{
    $preference = Locale::acceptFromHttp(getenv('HTTP_ACCEPT_LANGUAGE'));
}

// Match preferred language to those available, defaulting to generic English
$locale = Locale::lookup(config()->languages, $preference, false, 'en');

// Default Locale
Locale::setDefault($locale);
setlocale(LC_ALL, $locale . '.utf-8');
//putenv("LC_ALL", $locale);

Требуется PHP 5.3 и библиотека ICU INTL.

$ sudo apt-get install php5-intl

Получите используемый браузером язык ($_SERVER['HTTP_USER_AGENT']) автоматически, но предоставьте поле выбора (или что-то еще), чтобы дать возможность пользователю выбрать другой язык. Если вы используете фреймворк (и вам следует), у него должен быть какой-нибудь вспомогательный метод.

Я бы не стал использовать GeoIP, скажем, американский парень просматривает ваш сайт на отдыхе во Франции.

  1. Используйте язык браузера

  2. Обеспечить легкодоступное меню для переключения языков в любое время.

Использование Geolocation для установки первого выбора также является опцией, но она не на 100% надежна, и реальный язык браузера является гораздо лучшим индикатором того, на каком языке говорит пользователь.

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

Лучшая практика - позволить вашему пользователю выбирать язык с помощью селектора.

Другие вопросы по тегам