ThinkPHP5.0-多语言切换
这两天做得项目中需要多语言切换,于是乎就看了看文档,感觉有些乱,就使用了终极必杀--百度。
借鉴了网上各位大佬所集成。整理出一篇比较适合类似我这种比较菜的随笔吧。
请各位大佬轻虐。感谢。
首先,不说其他,肯定是先将config.php 中将配置修改
//是否开启多语言
'lang_switch_on' => true,
//语言种类
'lang_list' => ['zh-cn','en-us'],
//自动侦测语言
'lang_auto_detect' => true,
//
'VAR_LANGUAGE' => 'lang',
//默认全局过滤方法 用逗号分隔多个
'default_filter' => '',
//默认语言
'default_lang' => 'zh-cn',
然后根据文档说明:
本渣是在应用下新建的文件夹,即在application下新建一个lang 文件夹,我是要中英文切换所以就新建了zh-cn.php和en-us.php
其中zh-cn.php内容:
return ['test'=> "中文",'name'=>'叶子', ];
英文en-us.php内容:
return ['test'=> "English",'name'=>'wind find', ];
然后在控制器构造函数中添加:
public function _initialize(){if(!(Cookie::has('think_var'))){$this->lang();}$this->assign('think_lang',Cookie::get('think_var'));}
在当前控制器中添加lang方法
public function lang(){$lang = input('?get.lang') ? input('get.lang') : 'cn';switch ($lang) {//中文case 'cn':cookie('think_var', 'zh-cn');break;//英文case 'en':cookie('think_var', 'en-us');break;default:cookie('think_var', 'zh-cn');break;}}
前台模板页面代码(模板输出方式有两种一种是{$Think.lang.test},一种是{:lang('test')}):
<!DOCTYPE html> <html> <head><meta charset="utf-8"><title>前台</title><script type="text/javascript" src="http://code.jquery.com/jquery-2.1.4.min.js"></script> </head><body class="gray-bg"><span>{$Think.lang.test}--{:lang('test')}</span><span>{$Think.lang.name}</span><br/><button type="button" lang='cn' class="btn">中文</button><button type="button" lang='en' class="btn">英文</button><button type="button" lang='其他语言' class="btn">其他语言</button><script type="text/javascript">$('.btn').click(function(){var data = {'lang':$(this).attr('lang')}$.get("{:url('index/lang')}",data,function(){location.reload();})})</script> </body> </html>
然后最最最重要的一点,必须将\thinkphp\library\think\Lang.php 中的detect()方法修改:
/*** 自动侦测设置获取语言选择* @return string*/public static function detect() {// 自动侦测设置获取语言选择$langSet = Config::get('default_lang');if (isset($_GET[self::$langDetectVar])) {// url中设置了语言变量$langSet = strtolower($_GET[self::$langDetectVar]);Cookie::set(self::$langCookieVar, $langSet, 3600);} elseif (Cookie::get(self::$langCookieVar)) {// 获取上次用户的选择$langSet = strtolower(Cookie::get(self::$langCookieVar));} elseif ($langSet) {// 获取默认语言Cookie::set(self::$langCookieVar, $langSet, 3600);} elseif (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {// 自动侦测浏览器语言preg_match('/^([a-z\d\-]+)/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $matches);$langSet = strtolower($matches[1]);Cookie::set(self::$langCookieVar, $langSet, 3600);}if (empty(self::$allowLangList) || in_array($langSet, self::$allowLangList)) {// 合法的语言self::$range = $langSet;}return self::$range;}
接下来就是见证结果的时刻咯:
就这样完成咯。
本文主要借鉴:https://blog.csdn.net/qq_24038207/article/details/72627940
再次感谢萧风_2016大大。感谢。
路过的各位大佬,如有不满意地方,请轻虐。不胜感激。
如有需要,个人整理的TP5多语言代码:
链接: https://pan.baidu.com/s/17oIdfkjh2xSGWKSVy-_w2Q 提取码: qa9u
2019年03月04号
转载于:https://www.cnblogs.com/YFYQ/p/10472553.html
ThinkPHP5.0-多语言切换相关推荐
- Android 8.0 App内切换语言不生效的问题记录
国内大部分简单应该都只做了中文简体版,但是有部分项目需要面向国际化,甚至可能就是主打国外市场.因此我们有时候会遇到需要APP内做多语言切换的功能需求. 如何做多语言切换,网上资料还是很多的,本文也不是 ...
- ThinkPHP5多语言切换项目实战
ThinkPHP5多语言切换实战 1.在配置文件中开启多语言配置 2.然后添加多语言目录 这里创建你需要的语言包 在语言包里定义需要翻译的文本,中英文数组的键名写成一致 然后在html文件里输入 {: ...
- 最新优优博客系统2.5版/THinkphp5.0开源个人博客系统+多语言
正文: 优优博客系统是一款开源的thinkphp5.0 的 Blog系统,其衍生于优秀的内容管理系统 易优cms. 优优 Blog系统秉承了易优cms的先进设计理念,并且专注于个人博客系统. 易优 B ...
- android 7.0 兼容多语言切换总结
我们手机升级到android 7.0或购买到最新的android(大于7.0)机后,我们突然发现在系统设置语言切换的方式上有了很大的区别.这还好,只要我们按部就班设置好第一第二第N语言,使用上还是无二 ...
- 多语言php,多语言 · ThinkPHP5.0完全开发手册 · 看云
ThinkPHP内置通过`\think\Lang`类提供多语言支持,如果你的应用涉及到国际化的支持,那么可以定义相关的语言包文件.任何字符串形式的输出,都可以定义语言常量. ## 开启和加载语言包 默 ...
- html怎么实现多语言图片切换,JavaScript实现--中英语言切换功能
最近弄的项目是面向国际的,所以老总说要有语言切换功能.第一感觉好像不难吧 网上查了下,感觉实现方法就2种: 一:2个版本的HTML.至于怎么切换,方法也很多. 不过这种方法,除了笨,我实在不知道用什么 ...
- qml中loader加载页面会闪屏_Qml动态语言切换
此方法需要在Qt5.10或更高版本实现, 在Qt5.10或更高版本实现, 在Qt5.10或更高版本实现 重要的事情说三遍 首先在工程文件.pro中加入TRANSLATIONS = zh_CN.ts ...
- WPF ComboBox 使用 ResourceBinding 动态绑定资源键并支持语言切换
WPF ComboBox 使用 ResourceBinding 动态绑定资源键并支持语言切换 独立观察员 2021 年 8 月 23 日 我们平常在 WPF 中进行资源绑定操作,一般就是用 Stat ...
- Delphi XE2 之 FireMonkey 入门(18) - TLang(多语言切换的实现)
一个小小的 TLang 类, 实现多语言切换, 挺好的. 它的工作思路是: 1.首先通过 AddLang('语言代码') 添加语言类别, 如: AddLang('en').AddLang('cn'). ...
最新文章
- Datawhale组队学习 Task03:栈与递归(2天)
- 机器狗常州巡逻防疫,喊话“不扎堆不聚集”,网友:给孩子安个狗头吧
- LeetCode 13罗马数字转整数14最长公共前缀
- Java EE 7社区调查结果!
- java对象流读取完毕_从Java 8流中获取具有最大频率的对象
- 美国大学计算机专业排名2014,2014年美国大学本科计算机专业排名
- P2475 [SCOI2008]斜堆(递归模拟)
- Python代码优化之in关键字
- 修改IDLE查找历史命令为上箭头↑
- zookeeper 客户端常用命令_看完这篇文章,还说自己不会使用Zookeeper命令吗?
- idea svn 的使用----转载,挺好的
- uniapp对象怎么获取值_Uniapp使用GoEasy实现websocket实时通讯
- android+pdf+软件,Android最强PDF阅读器 十款软件大PK
- J2Cache 知识点总结
- 国内社交网络信息开放平台汇总
- C语言/461.(汉明距离)Hamming Distance
- java实现微软文本转语音(TTS)经验总结
- 03一般过去时和主谓双宾
- 计算机硬盘没内存怎么办,电脑内存不够用怎么办
- Go命令行调用Python运行ParlAI模型,同步输入输出并调用百度翻译API翻译
热门文章
- java加载配置文件_java 读取和修改配置文件
- python 生成nc文件_Python生成器处理大文本文件的代码
- python数字和运算符空格_Python基础——运算符与数据结构(200315)
- linux编译器下载地址,GNU Compiler Collection(gcc编译器) v4.9.1 linux版
- mpls工作原理通俗解释_马自达3 压燃上市的关头,解释X发动机的工作原理
- c++窗口管理系统是什么_维维华东食品饮料公司电能管理系统的设计与应用——安科瑞 戴玥...
- 开课吧Java教程之什么是Arrays
- Java基础篇:构造函数
- AI和机器学习对云计算的安全有何影响?
- zTree入门实例(一眼就看会)