Как выбрать язык пользователя - PullRequest
1 голос
/ 08 декабря 2011

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

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

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

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

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

Ответы [ 5 ]

3 голосов
/ 08 декабря 2011

Взято из MicroMVC framework .Следующее ищет 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
1 голос
/ 08 декабря 2011

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

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

1 голос
/ 08 декабря 2011

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

1 голос
/ 08 декабря 2011
  1. Использовать язык браузера

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

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

0 голосов
/ 08 декабря 2011

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

...