博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php实现在不同国家显示网站的不同语言版本
阅读量:6146 次
发布时间:2019-06-21

本文共 1568 字,大约阅读时间需要 5 分钟。

首先,你的网站本身要拥有多个语言版本。不然的话你就只能用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");}

 

转载于:https://www.cnblogs.com/Yirson/p/7856489.html

你可能感兴趣的文章
PC-BSD 9.2 发布,基于 FreeBSD 9.2
查看>>
网卡驱动程序之框架(一)
查看>>
css斜线
查看>>
Windows phone 8 学习笔记(3) 通信
查看>>
重新想象 Windows 8 Store Apps (18) - 绘图: Shape, Path, Stroke, Brush
查看>>
Revit API找到风管穿过的墙(当前文档和链接文档)
查看>>
Scroll Depth – 衡量页面滚动的 Google 分析插件
查看>>
Windows 8.1 应用再出发 - 视图状态的更新
查看>>
自己制作交叉编译工具链
查看>>
Qt Style Sheet实践(四):行文本编辑框QLineEdit及自动补全
查看>>
[物理学与PDEs]第3章习题1 只有一个非零分量的磁场
查看>>
深入浅出NodeJS——数据通信,NET模块运行机制
查看>>
onInterceptTouchEvent和onTouchEvent调用时序
查看>>
android防止内存溢出浅析
查看>>
4.3.3版本之引擎bug
查看>>
SQL Server表分区详解
查看>>
使用FMDB最新v2.3版本教程
查看>>
SSIS从理论到实战,再到应用(3)----SSIS包的变量,约束,常用容器
查看>>
STM32启动过程--启动文件--分析
查看>>
垂死挣扎还是涅槃重生 -- Delphi XE5 公布会归来感想
查看>>