Как выбрать язык пользователя
Я ищу лучший способ определить язык веб-пользователя, чтобы контент мог быть представлен на его родном языке. Я хочу знать о плюсах и минусах разных техник.
Несколько вариантов, на которые я смотрю:
- Использование 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, скажем, американский парень просматривает ваш сайт на отдыхе во Франции.
Используйте язык браузера
Обеспечить легкодоступное меню для переключения языков в любое время.
Использование Geolocation для установки первого выбора также является опцией, но она не на 100% надежна, и реальный язык браузера является гораздо лучшим индикатором того, на каком языке говорит пользователь.
Географическое положение потерпит неудачу во многих ситуациях. Например, говорящий по-английски человек, путешествующий / отдыхающий, получает неправильный язык во время пребывания в Украине. Я думаю, что большинство пользователей имеют правильный язык в настройках браузера.
Лучшая практика - позволить вашему пользователю выбирать язык с помощью селектора.