我正在寻找确定网络用户语言的最佳方式,以便可以以他的母语呈现内容。我想了解不同技术的优缺点。
我正在寻找的几个选项是:
- 使用使用 Maxminds 数据库的 PHP geoIP 扩展(免费版)
- 使用 http_negotiate_language 从浏览器访问用户语言
正如我所提到的,我不想更深入地了解州和城市。我只想根据用户的位置/语言切换内容。
你还有什么建议吗?
我正在寻找确定网络用户语言的最佳方式,以便可以以他的母语呈现内容。我想了解不同技术的优缺点。
我正在寻找的几个选项是:
正如我所提到的,我不想更深入地了解州和城市。我只想根据用户的位置/语言切换内容。
你还有什么建议吗?
取自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
使用浏览器的语言
提供易于访问的菜单以随时切换语言。
使用 Geolocation 设置第一选择也是一种选择,但它不是 100% 可靠的,并且实际的浏览器语言可以更好地指示用户说什么语言。
地理位置在许多情况下都会失败。例如,一个说英语的旅行/度假的人在乌克兰逗留时会出现错误的语言。我认为大多数用户在浏览器设置中都有正确的语言。
自动获取浏览器使用的语言($_SERVER['HTTP_USER_AGENT']),但提供一个选择框(或其他),让用户可以选择另一种语言。如果你正在使用一个框架(你应该)它应该有一些辅助方法。
我不会使用 GeoIP,比如说一个美国人在法国度假时正在浏览您的网站。
最佳实践是让您的用户从选择器中决定他们的语言。