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"); }
  • 相关阅读:
    effective C++ 条款 18:让接口容易被正确使用,不易被误用
    effective C++ 条款 24:若所有参数皆需类型转换,请为此采用nonmember函数
    PHP 归并排序
    IOS+H5页面自定义按钮无效
    vscode安装
    php 单例模式
    Warning: popen() has been disabled for security reasons in OS/Guess.php on line 241
    php 魔术方法
    php快速排序
    mysql 查询字段为空显示默认值
  • 原文地址:https://www.cnblogs.com/Yirson/p/7856489.html
Copyright © 2011-2022 走看看