这两天做得项目中需要多语言切换,于是乎就看了看文档,感觉有些乱,就使用了终极必杀--百度。

借鉴了网上各位大佬所集成。整理出一篇比较适合类似我这种比较菜的随笔吧。

请各位大佬轻虐。感谢。

首先,不说其他,肯定是先将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-多语言切换相关推荐

  1. Android 8.0 App内切换语言不生效的问题记录

    国内大部分简单应该都只做了中文简体版,但是有部分项目需要面向国际化,甚至可能就是主打国外市场.因此我们有时候会遇到需要APP内做多语言切换的功能需求. 如何做多语言切换,网上资料还是很多的,本文也不是 ...

  2. ThinkPHP5多语言切换项目实战

    ThinkPHP5多语言切换实战 1.在配置文件中开启多语言配置 2.然后添加多语言目录 这里创建你需要的语言包 在语言包里定义需要翻译的文本,中英文数组的键名写成一致 然后在html文件里输入 {: ...

  3. 最新优优博客系统2.5版/THinkphp5.0开源个人博客系统+多语言

    正文: 优优博客系统是一款开源的thinkphp5.0 的 Blog系统,其衍生于优秀的内容管理系统 易优cms. 优优 Blog系统秉承了易优cms的先进设计理念,并且专注于个人博客系统. 易优 B ...

  4. android 7.0 兼容多语言切换总结

    我们手机升级到android 7.0或购买到最新的android(大于7.0)机后,我们突然发现在系统设置语言切换的方式上有了很大的区别.这还好,只要我们按部就班设置好第一第二第N语言,使用上还是无二 ...

  5. 多语言php,多语言 · ThinkPHP5.0完全开发手册 · 看云

    ThinkPHP内置通过`\think\Lang`类提供多语言支持,如果你的应用涉及到国际化的支持,那么可以定义相关的语言包文件.任何字符串形式的输出,都可以定义语言常量. ## 开启和加载语言包 默 ...

  6. html怎么实现多语言图片切换,JavaScript实现--中英语言切换功能

    最近弄的项目是面向国际的,所以老总说要有语言切换功能.第一感觉好像不难吧 网上查了下,感觉实现方法就2种: 一:2个版本的HTML.至于怎么切换,方法也很多. 不过这种方法,除了笨,我实在不知道用什么 ...

  7. qml中loader加载页面会闪屏_Qml动态语言切换

    此方法需要在Qt5.10或更高版本实现, 在Qt5.10或更高版本实现, 在Qt5.10或更高版本实现 重要的事情说三遍 首先在工程文件.pro中加入TRANSLATIONS = zh_CN.ts ...

  8. WPF ComboBox 使用 ResourceBinding 动态绑定资源键并支持语言切换

    WPF ComboBox 使用 ResourceBinding 动态绑定资源键并支持语言切换 独立观察员  2021 年 8 月 23 日 我们平常在 WPF 中进行资源绑定操作,一般就是用 Stat ...

  9. Delphi XE2 之 FireMonkey 入门(18) - TLang(多语言切换的实现)

    一个小小的 TLang 类, 实现多语言切换, 挺好的. 它的工作思路是: 1.首先通过 AddLang('语言代码') 添加语言类别, 如: AddLang('en').AddLang('cn'). ...

最新文章

  1. Datawhale组队学习 Task03:栈与递归(2天)
  2. 机器狗常州巡逻防疫,喊话“不扎堆不聚集”,网友:给孩子安个狗头吧
  3. LeetCode 13罗马数字转整数14最长公共前缀
  4. Java EE 7社区调查结果!
  5. java对象流读取完毕_从Java 8流中获取具有最大频率的对象
  6. 美国大学计算机专业排名2014,2014年美国大学本科计算机专业排名
  7. P2475 [SCOI2008]斜堆(递归模拟)
  8. Python代码优化之in关键字
  9. 修改IDLE查找历史命令为上箭头↑
  10. zookeeper 客户端常用命令_看完这篇文章,还说自己不会使用Zookeeper命令吗?
  11. idea svn 的使用----转载,挺好的
  12. uniapp对象怎么获取值_Uniapp使用GoEasy实现websocket实时通讯
  13. android+pdf+软件,Android最强PDF阅读器 十款软件大PK
  14. J2Cache 知识点总结
  15. 国内社交网络信息开放平台汇总
  16. C语言/461.(汉明距离)Hamming Distance
  17. java实现微软文本转语音(TTS)经验总结
  18. 03一般过去时和主谓双宾
  19. 计算机硬盘没内存怎么办,电脑内存不够用怎么办
  20. Go命令行调用Python运行ParlAI模型,同步输入输出并调用百度翻译API翻译

热门文章

  1. java加载配置文件_java 读取和修改配置文件
  2. python 生成nc文件_Python生成器处理大文本文件的代码
  3. python数字和运算符空格_Python基础——运算符与数据结构(200315)
  4. linux编译器下载地址,GNU Compiler Collection(gcc编译器) v4.9.1 linux版
  5. mpls工作原理通俗解释_马自达3 压燃上市的关头,解释X发动机的工作原理
  6. c++窗口管理系统是什么_维维华东食品饮料公司电能管理系统的设计与应用——安科瑞 戴玥...
  7. 开课吧Java教程之什么是Arrays
  8. Java基础篇:构造函数
  9. AI和机器学习对云计算的安全有何影响?
  10. zTree入门实例(一眼就看会)