问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

thinkphp实现多语言切换时,数据库数据如何也实现多语言?

发布网友 发布时间:2022-04-23 06:09

我来回答

2个回答

懂视网 时间:2022-04-06 09:39

最近项目比较忙,就没有怎么写文章。本文主要内容为多语言的后台是如何实现的。

前言

公司需要写一个多语言后台,以前也没做过,于是到面向百度了一下。这是用了TP框架俩年了,第一次发现框架是自带的多语言切换功能。这里着实给点一个赞。

接下来我们来实现一下这个功能。

一、后台实现多语言

使用框架为v5.1.38 LTS

来到配置文件config/app.php可以看到关于语言的配置信息就只有这俩个参数。

lang_switch_on这个参数是自动监听的浏览器语言,

default_lang关于这个参数就是在没有切换其它语言之前就直接默认中文在这里插入图片描述配置文件了解之后我们需要在需要的模块创建lang目录,并且配置对应语言的语言包。

这里咔咔只配置了英文和中文 如还需要其它语言可自行添加即可。在这里插入图片描述到这一步你会发现从头到尾都没有一个参数说是配置语言列表的参数。配置文件也没有找到。

但是在文档里你可以看到这行代码。我们去源码看看

在这里插入图片描述在源码中就可以看得明白,语言的cookie的name值也是固定的,并且cookie的有效期时间为3600,这些都是需要根据自己项目进行调整的。

最重要的是看允许语言列表。我们继续追溯这个变量在这里插入图片描述在文件thinkphp/library/think/Lang.php最后我们就可以看到一个方法,这个方法也正是文档给出的一个方法在这里插入图片描述由于我们整个后台都需要使用多语言,所以我们需要在common中进行配置在这里插入图片描述

二、视图切换语言

在视图模板里直接调用languageChange方法在这里插入图片描述在这里插入图片描述在视图中有一个变量为$languageName,这个变量是咔咔直接从配置文件直接取出来的,后期会调整到数据库中。

在这里插入图片描述然后在控制器写方法changeLanguage,用来处理语言切换后的cookie改变在这里插入图片描述此时我们的后台页面就是这样的在这里插入图片描述

三、测试

在经过上面的操作之后,我们就可以根据自己设置的语言包来进行语言切换了

在模板中我们就需要使用lang这个模板标签进行获取数据在这里插入图片描述这个是英文状态在这里插入图片描述这个是中文状态在这里插入图片描述到这关于多语言的实现就完成了。

四、总结

上面说了这么多,只是把每一步的步骤给大家写出来了。

其中关键点如下

  • application/config.php配置文件修改
  • 在对应的模块里添加lang目录,并且创建需要的语言包
  • 视图进行语言切换调用后台接口存储cookie值。保存在think_var
  • 模板使用lang标签即可
  • 坚持学习、坚持写博、坚持分享是咔咔从业以来一直所秉持的信念。希望在诺大互联网中咔咔的文章能带给你一丝丝帮助。

    热心网友 时间:2022-04-06 06:47

    有两种情况,分析如下:
    1、需要中英文切换内容较少
    假设我们现在正在操作的是文章表,需要根据用户的语言环境输出中文或英文的文章内容。
    在文章表中多添加一个字段用于存储英文的内容,发布文章的页面,同时上传中英文内容即可,然后服务端通过thinkphp的多语言标识来决定读取中文内容或者英文内容。也可以在前端模板中进行识别。
    2、需要中英文切换内容较多
    如果某个数据表的多个字段或者多个数据表都需要做中英文切换,显然在数据表里添加多个字段的方式就不太合适了,那将导致数据表字段太多,不方便管理,可以采用多数据表的方式,将内容完整的分为两份。就是把涉及到中英文切换的数据表多拷贝一份而已,里面的数据是英文的
    。管理员后台,可以同时存储中英文内容,也可以分开存储,你自己决定就好,读取时同样使用thinkphp的多语言标识判断用户的语言环境,来决定查询中文表还是英文表。
    另外,如果整站都需要中英文切换,也可以做分布式数据库!
    一切根据实际需求决定!
    thinkphp实现多语言切换时,数据库数据如何也实现多语言?

    1、需要中英文切换内容较少 假设我们现在正在操作的是文章表,需要根据用户的语言环境输出中文或英文的文章内容。在文章表中多添加一个字段用于存储英文的内容,发布文章的页面,同时上传中英文内容即可,然后服务端通过thinkphp的多语言标识来决定读取中文内容或者英文内容。也可以在前端模板中进行识别。2、需...

    哪位大神会thinkphp5.0多语言切换?

    在Thinkphp5.0中,使用多语言的话,一般使用自动检测就可以了。开启自动检测只需要设置一下lang_switch_on参数就可以了。设置步骤如下:1、在根目录找到application文件中找到config.php。2、在config.php文件中找到lang_switch_on参数。3、将lang_switch_on参数的值设置为true即可。设置完毕后,Thinkphp...

    怎么样配置thinkphp 与本地mysql和sql server同时连接俩个数据库

    thinkphp 同时连接两个数据库的配置方法如下:1、在Db.class.php脚本文件里面的类增加一个魔术方法__get(),写法如下:public function __get($propertyName){ return $this->$propertyName;}这个方法是用来访问类中protected $config成员属性用的。有的人可能会说,直接把protected改成public岂不是更...

    在Thinkphp 中怎么实现中英文切换啊?

    if ( ereg('['.chr(0xa1).'-'.chr(0xff).']', $value) ){ //判断是不是纯中文,是为 true //是纯中文时,去相应的语言包中做对比,查找当前的中文 $value 对应的英文是什么,并把找到的英文替换掉当前这个中文 info[$key] = '匹配成功后的英文';}elseif ( ereg('[a-zA-Z]',...

    thinkphp配置文件里面要使用到数据库的数据怎么办,在config.php文件里面...

    config.php是用来设置相关的sql连接项,比如连接类型 连接帐号 密码 端口 数据库选择等.在要使用到数据库的数据时,在控制器中先初始化该表的model,如$user = M('User');

    在thinkphp框架中如何防止sql注入

    参数绑定能够确保传递给SQL语句的数据与命令分开,这样即使数据中包含恶意代码,也不会被数据库执行。在ThinkPHP中,可以通过预处理语句或者查询构造器的方式来实现参数绑定。其次,查询构造器是ThinkPHP中另一个重要的防SQL注入工具。查询构造器提供了一种链式调用的方式来构建SQL语句,它内部会自动处理数据的...

    thinkphp数据库事物可以在多个模块中用么

    事务是针对数据库本身的,所以可以跨模型操作的 。例如:// 在User模型中启动事务 User->startTrans();// 进行相关的业务逻辑操作 Info = M("Info"); // 实例化Info对象 Info->save($User); // 保存用户信息 if (操作成功){ // 提交事务 User->commit();}else{ // 事务回滚 User->...

    thinkphp怎么输出数据库内容?

    控制器:result = $M->where($where)->select(); //读取数据库内容 this->assign("result",$result); //输出变量到模板 dump($result);//打印当前变量内容 模板:<volist name="result" id="vo"> {$vo.id} </volist>

    thinkphp在想数据库里插入数据的时候也想自动插入系统时间,代码怎么...

    这个是公用model,定义自动填充的函数如下:class CommonModel extends Model { function getDate{ return ('Y-m-d');}} 在该model中 class testModel extends CommonModel{ // 自动填充设置 protected $_auto = array(array('update_date','getDate',1,'callback'),);} 数据库中对应字段:...

    thinkphp如何同时向数据库插入多条数据?

    数据整理好后,批量插入可用addAll方法(仅针对Mysql数据库):User->addAll($data);

    thinkphp3切换数据库 thinkphp获取数据库数据 thinkphp数据库 thinkphp数据库类 thinkphp查询数据库 thinkphp5连接数据库 thinkphp高并发写入数据库 sql语言是什么数据库语言 thinkphp数据表调用分析
    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    遗忘时间废墟问题 专业的压铸围板箱选哪家好呀 名星为什么喜欢苹果手机?我为什么喜欢用三星手机比苹果多一点? 5555我该怎么做? 我早恋了怎么办5555 手套箱操作步骤 我被地头蛇压了。5555 主板的显卡插槽 我快要崩溃了。。。5555 急求解啊我想睡觉5555 吃鸡春对腰好好处吗? PHP关于自定义字段+多语言的网站数据库设计 绝地求生春季赛竞猜有什么奖励吗?去哪里 数据库如何存储多种语言,如简体中文,繁体中文,日文,俄文 手机吃鸡游戏怎么样 手机吃鸡游戏玩法攻略 华为青春畅8e吃鸡神器怎么用 吃鸡还怎么玩呐。全是挂逼 吃鸡手游是怎么做到 在小内存手机运行的 苹果ipad怎么取消更新系统? 《绝地求生大逃杀》怎么成功吃鸡的技巧有哪些? 吃鸡是什么游戏?怎么玩? 《绝地求生》中的服装怎么搭配既便宜又好看? 绝地求生怎么左右晃 电影《婚姻故事》好在哪里? 猫武士在线阅读 许多学生心中的爱情向往,你心目中最好看的*爱情片是哪部,为什么? 我们是否要频临分手了呢? 别对我说谎第二季 别对我说谎第二季全集在线观看 苹果se可以插内存卡吗 《相爱不如相见》txt下载在线阅读全文,求百度网盘云资源 吃鸡里甜蜜信号称号怎么获得的? 如何实现网站的多语言版本 要会SQL数据库的要会各种语言??? 请问:网站开发有多种语言及数据库,分别什么语言使用什么数据库?规律是... SQL2000支持多国语言吗(一个数据库里) 网站如何实现多语言架构,比如同时支持中,英,法,俄 数据库系统开发,用什么编程语言最好? 企业微信与个人微信有什么区别? 数据库是不是针对各种语言的??? 企业微信跟个人微信是两个不同的APP,那么他们有何不同? 企业微信跟个人微信是两个不同的APP,那么他们有何不同? 数据库分语言么? 企业微信和个人微信的区别和联系有哪些? 请问数据库用哪种语言好 使用企业微信和个人微信有什么区别? 企业微信or个人微信的区别到底有啥? 企业微信or个人微信的区别到底有啥? 腾讯企业版微信和普通个人微信有什么区别?如何办理开通使用? 腾讯企业版微信和普通个人微信有什么区别?如何办理开通使用? wps里面字与字之间的间距怎么弄