2

我正在寻找确定网络用户语言的最佳方式,以便可以以他的母语呈现内容。我想了解不同技术的优缺点。

我正在寻找的几个选项是:

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

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

你还有什么建议吗?

4

5 回答 5

3

取自MicroMVC 框架。下面查找可以由 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
于 2011-12-08T19:07:07.953 回答
1
  1. 使用浏览器的语言

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

使用 Geolocation 设置第一选择也是一种选择,但它不是 100% 可靠的,并且实际的浏览器语言可以更好地指示用户说什么语言。

于 2011-12-08T19:07:08.263 回答
1

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

于 2011-12-08T19:07:17.270 回答
1

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

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

于 2011-12-08T19:12:15.260 回答
0

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

于 2011-12-08T19:05:24.590 回答