首页
学习
关于
友链
Search
1
小程序 蓝牙连接(出现的问题和一些解决方法)
304 阅读
2
一些 javaScript、CSS 的优雅使用
83 阅读
3
PicGo+GitHub搭建个人图床
76 阅读
4
侧边菜单切换的显示与隐藏,图标的 + 与 -
75 阅读
5
国内加速访问 GitHub
72 阅读
全部
感想
旅行
生活
学习
登录
Search
标签搜索
css
javascript
jquery
html
小程序
github
图床
假期
发布订阅
typecho
第一次
未来
快乐与忧伤
努力
奋斗
PicGo
倒计时
元旦
svg
vue
逸曦穆泽
累计撰写
35
篇文章
累计收到
1
条评论
首页
栏目
全部
感想
旅行
生活
学习
页面
学习
关于
友链
搜索到
1
篇与
多语言
的结果
2022-07-25
php 网站的多语言设置(IP地址区分国内国外)
序:本来,以为做一个语言切换的按钮就可以一直安枕无忧了,突然上头说要来一个区分国内与国外的,在国内访问的显示中文,在国外访问的显示英文。好吧!找一下资料看看。tp5,需求是按钮切换的,选择参考3;方法一:IP查询网在线API申请,有1000次免费的;代码示例,有各大主流的语言写法 代码实现( 参考3有完整的)// 多语言 将 think_val 自定义设置为 customLang function lang(){ $lang = input('lang'); if(!$lang){ // 默认:think_var if(Cookie::has("customLang")){ $lang = Cookie::get("customLang"); }else{ // $lang = "zh-cn"; $ip = request() -> ip(0,true); $datatype = 'json'; $url = 'https://api.ip138.com/ip/?ip='.$ip.'&datatype='.$datatype; $header = array('token:你的token'); $obj = $this-> getRequest($url,$header); $objson = json_decode($obj,true); $isAddress = $objson['data'][0]; if($isAddress == "中国"){ $lang = "zh-cn"; }else{ $lang = "en-us"; } } } $lang = Lang::range($lang);//设定当前语言 Lang::load(THINK_PATH.'lang'.DS.$lang.EXT,$lang);//加载当前语言包 Cookie::set('customLang',$lang); return $lang; }方法二:maxmind GeoIP :先使用邮箱注册一个账号,并登录账号,创建一个密钥,名称就像一个备注,它会生成一个ID和密钥,记得保存好,它只显示一次;1、登录后就可以下载一个数据包了,数据包是每周二更新的:2、获取代码支持:查看1)、安装:composer require geoip2/geoip2:~2.02)、下载数据库,需要注册邮箱账号登录:https://www.maxmind.com/en/accounts/722009/geoip/downloads3)、代码实现:use GeoIp2\Database\Reader;function lang(){ $lang = input('lang'); if(!$lang){ if(Cookie::has("lenze_lang")){ $lang = Cookie::get("lenze_lang"); }else{ $ip = request() -> ip(0,true); // maxmind 获取判断 $reader = new Reader('./public/static/GeoLite2-Country.mmdb'); // 解压的数据包 $record = $reader->country($ip); $isAddress = $record->country->isoCode; if($isAddress == "cn" || $isAddress == "CN"){ $lang = "zh-cn"; }else{ $lang = "en-us"; } } } $lang = Lang::range($lang);//设定当前语言 Lang::load(THINK_PATH.'lang'.DS.$lang.EXT,$lang);//加载当前语言包 Cookie::set('lenze_lang',$lang); return json(['lang'=>$lang]); }方法三:可以使用高德地图的IP定位,不过,高德需要搜索的IP地址(仅支持国内),刚好,搜索得到的就判断为国内,搜索数据为空的为国外。IP定位-API文档-开发指南-Web服务 API | 高德地图API这个有开发文档了,就不用我多唠叨和做无用功了,嘎嘎!参考:1、最新多种方式, 判断客户端IP是国内还是国外?_解忧杂货铺Q的博客-CSDN博客_判断ip是国内还是国外2、tp5多语言切换_红卡的博客-CSDN博客_tp5多语言3、tp5 实现多语言切换的一个小bug_逸曦穆泽的博客-CSDN博客_tp 多语言
2022年07月25日
50 阅读
0 评论
0 点赞