问答文章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的多语言标识判断用户的语言环境,来决定查询中文表还是英文表。
    另外,如果整站都需要中英文切换,也可以做分布式数据库!
    一切根据实际需求决定!
    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    ...分?普通话不好没事吧?我现在东营工作,这边有没有短期的培训... “腾马培训”的公务员面试辅导有实战模拟吗? 北京腾马顺通物流有限公司是骗人的吗?在木樨园那一带 vivonex屏幕是多大的 vivoNEX配置是怎么样的 衣服被染色了怎么能恢复? 描写关于旅行的唯美句子 关于旅行的文艺句子 旅行简短文艺句子出去玩的心情发朋友圈 麻辣捞面怎么做? 南京市有哪些私立高中 吃鸡春对腰好好处吗? PHP关于自定义字段+多语言的网站数据库设计 绝地求生春季赛竞猜有什么奖励吗?去哪里 数据库如何存储多种语言,如简体中文,繁体中文,日文,俄文 手机吃鸡游戏怎么样 手机吃鸡游戏玩法攻略 华为青春畅8e吃鸡神器怎么用 吃鸡还怎么玩呐。全是挂逼 吃鸡手游是怎么做到 在小内存手机运行的 苹果ipad怎么取消更新系统? 《绝地求生大逃杀》怎么成功吃鸡的技巧有哪些? 吃鸡是什么游戏?怎么玩? 《绝地求生》中的服装怎么搭配既便宜又好看? 绝地求生怎么左右晃 电影《婚姻故事》好在哪里? 猫武士在线阅读 许多学生心中的爱情向往,你心目中最好看的*爱情片是哪部,为什么? 我们是否要频临分手了呢? 别对我说谎第二季 别对我说谎第二季全集在线观看 苹果se可以插内存卡吗 《相爱不如相见》txt下载在线阅读全文,求百度网盘云资源 吃鸡里甜蜜信号称号怎么获得的? 如何实现网站的多语言版本 要会SQL数据库的要会各种语言??? 请问:网站开发有多种语言及数据库,分别什么语言使用什么数据库?规律是... SQL2000支持多国语言吗(一个数据库里) 网站如何实现多语言架构,比如同时支持中,英,法,俄 数据库系统开发,用什么编程语言最好? 企业微信与个人微信有什么区别? 数据库是不是针对各种语言的??? 企业微信跟个人微信是两个不同的APP,那么他们有何不同? 企业微信跟个人微信是两个不同的APP,那么他们有何不同? 数据库分语言么? 企业微信和个人微信的区别和联系有哪些? 请问数据库用哪种语言好 使用企业微信和个人微信有什么区别? 企业微信or个人微信的区别到底有啥? 企业微信or个人微信的区别到底有啥? 腾讯企业版微信和普通个人微信有什么区别?如何办理开通使用? 腾讯企业版微信和普通个人微信有什么区别?如何办理开通使用? wps里面字与字之间的间距怎么弄