我正在开发一个网站,它有一些小的国际化需求(英语,法语和德语),我想知道用户来自哪里,所以我知道要显示哪些。我认为正确的方法是检查“HTTP_ACCEPT_LANGUAGE”标题以找出用户请求的#1语言(并且可以安全地假设德国的所有用户都有默认要求DE的浏览器等)
这是对的吗?或者我还做了别的事情(希望没有太多荒谬,比如试图从他们的IP中弄清楚他们的国家)......?
thanks-- 埃里克
答案 0 :(得分:9)
如果您选择目前最受欢迎的选择 - geoIP - 而无需进一步考虑,那么您的用户就不会受到青睐。
语言和国家不重叠。您打算如何处理来自瑞士IP地址的用户?比利时?加拿大?如果你在每种情况下使用多数语言,你会惹恼那些碰巧属于大型语言少数群体的重复访客:他们每次都会以“错误”的语言受到欢迎,即使该网站可用他们的首选语言。对于外籍人士来说也是如此 - 从经验来看,仅仅因为我碰巧去瑞典旅行而被瑞典人打招呼是非常令人不安的。 (甚至大网站也弄错了。前几天我从伦敦到达温哥华机场,谷歌把我转到fr_CA。)不要忘记,很多人都是多国语言或非母语人士,他们的国家使用多数语言居住。
以下是我遵循的指导原则:
答案 1 :(得分:0)
我会检查接受语言标题和访问者IP地址的原始国家/地区。如果接受语言标题不是英语(可能是最常用的默认设置),请使用它来设置默认语言。如果接受语言是英语,请使用原始国家/地区设置默认语言。我认为这会让你对访客的母语进行更有根据的猜测。
答案 2 :(得分:-1)
你几乎回答了你自己的问题 - 你可以使用那个标题或只是geoip(它很简单易用)
从下载: http://geolite.maxmind.com/download/geoip/api/php/
示例代码:
include("geoipcity.inc");
include("geoipregionvars.php");
$gi = geoip_open("GeoLiteCity.dat", GEOIP_STANDARD);
$record = geoip_record_by_addr($gi, $user_ip);
echo "The users country code is:" . $record->country_code;
geoip_close($gi);