php实现在不同国家显示网站的不同语言版本

首先,你的网站本身要拥有多个语言版本。不然的话你就只能用JS去转化了。

1.通过ip去定位,这个要引用到第三方的接口进行数据的完整返回,但是不知道是我的网速太慢还是什么原因,个人觉得这个方法会卡顿:

获取访问者的IP
function
getIP() { if (isset($_SERVER)) { if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $realip = $_SERVER['HTTP_X_FORWARDED_FOR']; } elseif (isset($_SERVER['HTTP_CLIENT_IP'])) { $realip = $_SERVER['HTTP_CLIENT_IP']; } else { $realip = $_SERVER['REMOTE_ADDR']; } } else { if (getenv("HTTP_X_FORWARDED_FOR")) { $realip = getenv("HTTP_X_FORWARDED_FOR"); } elseif (getenv("HTTP_CLIENT_IP")) { $realip = getenv("HTTP_CLIENT_IP"); } else { $realip = getenv("REMOTE_ADDR"); } } return $realip; } $ip = getIP();
通过获得的IP去和第三方接口实现对接,返回的是json格式的数据,转化格式,可以得到一个完整的数组,下面是取country这个键的值来判断,可以是country_id。header到你想跳转的语言版本的url。
$res0 = file_get_contents("http://ip.taobao.com/service/getIpInfo.php?ip=$ip"); $res0 = json_decode($res0, true); //echo $res0['data']['country'];exit; if ($res0['data']['country'] == '美国' || $res0['data']['country'] == '英国') { header("location:/en"); }else if ($res0['data']['country'] == '德国') { header("location:/dw"); }else{ header("location:/"); }

 

2.通过获取浏览器的meta进而判断显示哪种语言。这种可以是用js或者是用php都能实现的。我是用的php

用到PHP的$_SERVER['HTTP_ACCEPT_LANGUAGE']这个函数,获取当前浏览器打开的网站的meta值,进而切割字符串做对比,然后header到指定的网站。

$lange
= strtolower(substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2)); if($lange=='en') { header("location:/en"); }else if ($lange == 'de') { header("location:/dw"); }

 

posted @ 2017-11-18 13:38  500_Invalid  阅读(492)  评论(0编辑  收藏  举报