zoukankan      html  css  js  c++  java
  • 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"); }
  • 相关阅读:
    x64 平台开发 Mapxtreme 编译错误
    hdu 4305 Lightning
    Ural 1627 Join(生成树计数)
    poj 2104 Kth Number(可持久化线段树)
    ural 1651 Shortest Subchain
    hdu 4351 Digital root
    hdu 3221 Bruteforce Algorithm
    poj 2892 Tunnel Warfare (Splay Tree instead of Segment Tree)
    hdu 4031 Attack(BIT)
    LightOJ 1277 Looking for a Subsequence
  • 原文地址:https://www.cnblogs.com/Yirson/p/7856489.html
Copyright © 2011-2022 走看看