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

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

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

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

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

Есть ли у вас какие-либо другие предложения?

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

Взято из структуры 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 и библиотека INTL ICU.

 $ sudo apt-get install php5-intl 
  1. Использовать язык браузера

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

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

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

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

Я бы не использовал GeoIP, скажем, парень из США просматривает ваш сайт во время отпуска во Франции.

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