ThinkPHP多语言如何实现你了解过吗?

简介: ThinkPHP多语言如何实现你了解过吗?

实现多语言后台


前言

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


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


一、后台实现多语言

使用框架为v5.1.38 LTS


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


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


default_lang关于这个参数就是在没有切换其它语言之前就直接默认中文

image.png

配置文件了解之后我们需要在需要的模块创建lang目录,并且配置对应语言的语言包。


这里咔咔只配置了英文和中文 如还需要其它语言可自行添加即可。

image.png

到这一步你会发现从头到尾都没有一个参数说是配置语言列表的参数。配置文件也没有找到。


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

image.png


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


最重要的是看允许语言列表。我们继续追溯这个变量

image.png

在文件thinkphp/library/think/Lang.php最后我们就可以看到一个方法,这个方法也正是文档给出的一个方法

image.png

由于我们整个后台都需要使用多语言,所以我们需要在common中进行配置

image.png


二、视图切换语言

在视图模板里直接调用languageChange方法


image.png

在视图中有一个变量为$languageName,这个变量是咔咔直接从配置文件直接取出来的,后期会调整到数据库中。


image.png

然后在控制器写方法changeLanguage,用来处理语言切换后的cookie改变

image.png

此时我们的后台页面就是这样的

image.png


三、测试

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


在模板中我们就需要使用lang这个模板标签进行获取数据

image.png

这个是英文状态

image.png

这个是中文状态

image.png

到这关于多语言的实现就完成了。


四、总结

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


其中关键点如下


  • application/config.php配置文件修改
  • 在对应的模块里添加lang目录,并且创建需要的语言包
  • 视图进行语言切换调用后台接口存储cookie值。保存在think_var
  • 模板使用lang标签即可


相关文章
|
中间件 PHP 数据安全/隐私保护
【Thinkphp 6】框架基础知识
【Thinkphp 6】框架基础知识
188 1
|
3月前
|
自然语言处理 Java 网络架构
解锁跨平台微服务新纪元:Micronaut与Kotlin联袂打造的多语言兼容服务——代码、教程、实战一次打包奉送!
【9月更文挑战第6天】Micronaut是一款轻量级、高性能的Java框架,适用于微服务开发。它支持Java、Groovy和Kotlin等多种语言,提供灵活的多语言开发环境。本文通过创建一个简单的多语言兼容服务,展示如何使用Micronaut及其注解驱动特性实现REST接口,并引入国际化支持。无论是个人项目还是企业应用,Micronaut都能提供高效、一致的开发体验,成为跨平台开发的利器。通过简单的配置和代码编写,即可实现多语言支持,展现其强大的跨平台优势。
56 3
|
4月前
|
前端开发 中间件 PHP
|
5月前
|
SQL 安全 搜索推荐
ThinkPHP5中如何实现模板完全静态化
模板完全静态化,也就是通过模板完全生成纯静态的网页,相比动态页面和伪静态页面更安全更利于SEO访问更快。相比前二者各有利弊吧,现在稍微对这三种形式的优缺点对比一下,以及在ThinkPHP5项目中实现完全静态化的基本过程。
59 1
|
移动开发 自然语言处理 小程序
前端不使用 i18n,如何优雅的实现多语言?
前端不使用 i18n,如何优雅的实现多语言?
前端不使用 i18n,如何优雅的实现多语言?
|
SQL 前端开发 程序员
Laravel和Thinkphp有什么区别,哪个框架好用
Laravel和Thinkphp有什么区别,哪个框架好用
754 0
|
开发框架 JSON 前端开发
极简实用的Asp.NetCore模块化框架决定免费开源了
在开发这个框架之前,前前后后看过好几款模块化的框架,最后在一段时间内对ABP VNext痛下狠心,研究一段时间后,不得不说 ABP VNext的代码层面很规范,也都是一些最佳实践,开发出一个模块效率也很高。但不得不说,于我而言太重了。还看过一些其他模块化的框架,就不说了,学习成本于我而言太高了,主要是自己懒。
233 0
极简实用的Asp.NetCore模块化框架决定免费开源了
|
XML JSON 自然语言处理
一步一步实现网站的多语言版本
网站在开发的过程中需要实现多语言版本,我们暂且认为有英语和汉语两个版本。网站结构包括,UI过程,rest服务,以及相应的js,各个部分我们都要实现多语言,不要求一键切换,但是在部署过程中要能实现多与语言配置。
2495 0
|
Web App开发 JavaScript Java