我正在寻找决定网络用户语言的最佳方式,以便能够以他的母语显示内容。我想知道不同技术的优缺点。如何决定用户的语言
我在看几个选项是:
- 使用利用Maxminds数据库(免费版)从浏览器中使用http_negotiate_language
正如我前面提到我
你有什么建议吗?
我正在寻找决定网络用户语言的最佳方式,以便能够以他的母语显示内容。我想知道不同技术的优缺点。如何决定用户的语言
我在看几个选项是:
正如我前面提到我
你有什么建议吗?
最好的做法是让用户从选择器中决定他们的语言。
我上面的例子是这样做的。首先你要问浏览器(他们在安装时已经配置了它们),如果不够好,那么让他们从下拉菜单中选择一种语言并保存一个名为“lang”的cookie来使用它。 – Xeoncross
取自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
使用cookies只是一个大缺陷,你不能同时打开多个不同语言的页面,这就是为什么我倾向于使用基于URL的方法 –
@Pekka,是的,但不要忘记你可以限制cookie某些路径如果需要。 – Xeoncross
@Pekka,在不同的语言环境中同时打开多个页面的要点是什么? –
使用浏览器的语言
提供一个方便的菜单随时切换语言。
使用地理定位来设置的第一选择是一个选项,以及,但它不是100%可靠的,而实际浏览器语言的用户讲什么语言一个更好的指标。
在很多情况下,地理位置都会失败。例如,一个讲英语的人在旅行/度假时会在乌克兰逗留时出现错误的语言。我认为大多数用户在浏览器设置中使用正确的语言。
自动获取浏览器的使用语言($ _SERVER ['HTTP_USER_AGENT']),但提供了一个选择框(或其他)来给用户选择另一种语言的可能性。如果你使用的是框架(你应该),它应该有一些辅助方法。
我不会使用GeoIP,比如说一个美国人在法国度假期间浏览您的网站。
我已将此标记为php,但您也可以使用javascript navigator.language,具体取决于您需要知道的位置。语言不会在边界清晰地变化,我敢肯定很多人说,美国,用西班牙语或中文的首选语言浏览,所以你的浏览器说你住在纽约,并不真正告诉我你的语言是什么说请求标题确实说如何配置浏览器(选择一种语言或本地化) – MatthewMartin
询问他们......? – Ben