如何决定用户的语言

时间:2011-12-08 18:45:21

标签: php geoip user-location

我正在寻找决定网络用户语言的最佳方式,以便内容可以用他的母语呈现。我想知道不同技术的利弊。

我正在关注的几个选项是:

  • 使用PHP geoIP扩展,它使用Maxminds数据库(免费版)
  • 使用http_negotiate_language
  • 从浏览器访问用户语言

正如我所提到的,我不想深入了解州和城市。我只想根据用户位置/语言切换内容。

你还有其他建议吗?

5 个答案:

答案 0 :(得分:3)

取自MicroMVC framework。下面查找可以由Javascript语言选择器设置的cookie - 如果找不到它,则使用用户浏览器发送的设置。

// 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 :(得分:1)

  1. 使用浏览器的语言

  2. 提供易于访问的菜单,以便随时切换语言。

  3. 使用Geolocation设置第一个选项也是一个选项,但它不是100%可靠,实际的浏览器语言可以更好地指示用户说的语言。

答案 2 :(得分:1)

在许多情况下,地理位置都会失败。例如,一个说英语的人在旅行/度假时会在乌克兰逗留期间出现错误的语言。我认为大多数用户在浏览器设置中都有正确的语言。

答案 3 :(得分:1)

自动获取浏览器使用的语言($ _SERVER ['HTTP_USER_AGENT']),但提供一个选择框(或其他内容),以便用户选择其他语言。如果你正在使用一个框架(你应该)它应该有一些帮助方法。

我不会使用GeoIP,比如一个美国人在法国度假时浏览你的网站。

答案 4 :(得分:0)

最佳做法是让您的用户从选择器中决定他们的语言。