ThinkPHP 5 框架实现多语言 实例讲解

2023-11-19

ThinkPHP 5 框架实现多语言

今天给大家分享一篇tp5框架多语言的实例

第一步: 您需要在配置文件中开启网站多语言, 并添加语言允许列表:
    // 默认语言
    'default_lang'           => 'zh-cn',
    // 语言允许列表
    'lang_list' => ['zh-cn','en-us'],
第二步: 添加 zh-cn.php 与 en-us.php 这两个语言包, 它们定义在application下lang目录中:

语言包路径

这两个语言包的具体内容如下:
1. zh-cn.php
<?php

return [
    'lang' => '中文'
];
2. en-us.php
<?php

return [
    'lang' => 'English'
第三步: 在模板文件中定义内容:
<p>您当前的语言为: {:lang('lang')}</p>
已经大功告成啦! 我们打开首页去访问看看

在这里插入图片描述

我们可以发现访问首页返回的是中文, 因为在config.php中, 默认的语言是zh-cn

接下来又出现了一个问题, 我需要怎么切换语言呢? 别急, 看代码

首先, 我们在首页写一个a链接, 做语言切换, 然后链接到我们的Index控制器replaceLang方法中.

<a href="/replaceLang">切换语言</a>

路由文件:

// 切换语言
Route::get('/replaceLang$', 'index/Index/replaceLang');

接下来就是最后一步, 也就是控制器中的代码

/**
     * 语言切换
     */
    public function replaceLang()
    {
        $lang = \think\Lang::detect();
        switch ($lang) {
            case 'zh-cn':
                cookie('think_var', 'en-us');
                return $this->success('切换英文成功!');
                break;
            case 'en-us':
                cookie('think_var', 'zh-cn');
                return $this->success('切换中文成功!');
                break;
            //其它语言
        }
    }

ps: \think\Lang::detect(); 此方法用于获取当前语言.

大家都学会了吗? 是不是没有想象中的这么难. 本文自己原创内容, 转载请注明来处!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ThinkPHP 5 框架实现多语言 实例讲解 的相关文章

  • 使用 Laravel 4 验证多个文件上传

    如何在 Laravel 4 中验证上传文件的数组 我已将其设置为允许多个文件 并且已测试这些文件是否存在于 Input file files 数组中 但如何验证每个文件呢 这是我尝试过的 notesData array date gt In
  • Zend Framework 生成唯一的字符串

    我想生成一个唯一的 4 6 个字符长的字母数字字符串 以便与每个记录 用户 一起保存在数据库中 db 字段具有唯一索引 因此尝试保存预先存在的字符串会生成错误 现在我正在生成一个随机字符串并使用 try catch 因此在添加新记录时如果抛
  • 通过 Ajax 加载内容时,WORDPRESS 音频播放器未加载,MediaElement.js 未应用

    我正在创建一个 WordPress 主题 当我使用 ajax 加载内容时 它不会将 MediaElements js 应用于我的音频播放器 因此不会显示音频 我认为这是因为 MediaElement js 加载了 wp footer 并且此
  • 单词之间没有空格的语言(例如亚洲语言)中的断词?

    我想让 MySQL 全文搜索适用于日语和中文文本以及任何其他语言 问题在于这些语言以及可能其他语言通常在单词之间没有空格 当您必须键入与文本中相同的句子时 搜索没有用 我不能只在每个字符之间添加空格 因为英语也必须有效 我想用 PHP 或
  •  
    标记内删除

    我制作了简单的 BBCode 脚本 一切正常 但后来我使用了一个 javascript 库来美化我的代码 pre pre 现在我面临的唯一问题是 br 每行代码后面的标签 pre pre tags 所以问题是我怎样才能删除 br 标记哪些在
  • Yii 使用 ajax 进行分页

    我需要使用ajax启用分页 我的代码 控制器 更新内容ajax function actionIndex dataProvider new CActiveDataProvider News array pagination gt array
  • FPDI/FPDF:水印和打印多页

    我修改了这个堆栈问题 当用户尝试下载文件时在 pdf 文件上应用水印 https stackoverflow com questions 3983432 applying watermarks on pdf files when users
  • Woocommerce 让产品显示在存档页面中

    我正在尝试让所有产品显示在我商店的存档页面中 我想知道他们的id我正在使用我的一个钩子 它在 wp head 上运行并检查 if is product category 我想以某种方式访问 产品的查询并获取它们的 ID if is prod
  • PHP严格标准:声明应该兼容

    我有以下类层次结构 class O Base class O extends O Base abstract class A Abstract public function save O Base obj class A extends
  • 如何使用 php 下载/打印页面的特定部分

    我有一个 HTML 页面如下 Lorem Ipsum is simply dummy text of the printing and typesetting industry Lorem Ipsum has been the indust
  • 蛋糕控制台 2.2.1:烘焙错误

    运行 MAMP 的 OSX 机器 CakePHP 2 2 1 已正确安装和配置 这意味着当我浏览到 Index php 文件时 所有绿色条都显示出来 我已经完成了博客教程 并且正在开发我的第二个应用程序 其中脚手架已启动并运行 现在我第一次
  • Symfony2 Assetic 和 Less Sourcemaps

    我不确定如何破解 assetic less 过滤器以输出源映射文件 我这里指的是LessFilterhttps github com kriswallsmith assetic blob master src Assetic Filter
  • 使用 preg_replace 仅替换第一个匹配项

    我有一个结构类似于以下的字符串 aba aaa cba sbd dga gad aaa cbz 该字符串每次都可能有点不同 因为它来自外部源 我只想替换第一次出现的 aaa 但其他人则不然 是否可以 可选的第四个参数预替换 http php
  • 随机组合 MySQL 数据库中的两个单词

    我有一个包含名词和形容词的数据库 例如 id type word 1 noun apple 2 noun ball 3 adj clammy 4 noun keyboard 5 adj bloody ect 我想创建一个查询 它将抓取 10
  • 覆盖控制器 Symfony 3.4/4.0

    我目前正在尝试覆盖 FOSUserBundle 中的控制器 在新的文档中 https symfony com doc 3 4 bundles override html https symfony com doc 3 4 bundles o
  • 在 apache docker 容器中运行虚拟主机

    我在同一个 apache 容器中有两个 php 应用程序 我试图在端口上运行其中一个应用程序 因为它需要通过根域而不是子文件夹进行访问 我想在端口 8060 上运行应用程序 我尝试使用 apache 虚拟主机执行此操作 但它不会加载页面 h
  • 如果循环中内存超出,我可以在 for 循环中抛出异常吗?

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如何处理 foreach 循环中发生
  • PHP HEREDoc (EOF) 语法在 Sublime Text 3 上突出显示与正斜杠的差异

    我不熟悉 Sublime Text 3 如何使用语法突出显示 例如 如果它纯粹依赖于主题 或者它内置于主题运行的标准中 但就我而言 使用 PHP 的 HERE 文档和转发存在一些语法突出显示差异斜线 一旦出现正斜杠 ST3 就会认为以下所有
  • Laravel 中只向登录用户显示按钮

    如果我以 John 身份登录 如何才能只显示 John 的红色按钮而不显示 Susan 的红色按钮 测试系统环境 Win10 Laravel5 4 Mysql5 7 19 table class table table responsive
  • 如何使用 PHPExcel 库从 Excel 获取日期

    我正在尝试使用 PHPExcel 从 Excel 获取日期 但我没有得到日期 我得到的字符串值不是 1970 以来的秒数 我尝试过的代码是 InvDate trim excel gt getActiveSheet gt getCell B

随机推荐

  • 手把手教你进行APP数据埋点

    经过大半年的努力 产品终于开始趋向稳定 之前的版本一直在探索 需求经常改动 没时间系统进行埋点 随着产品的稳定以及工作的深入 越发认识到数据的重要性 所以开始着手数据埋点相关事项 这次亲历了产品 APP 从零开始进行数据埋点的过程 分享出来
  • 【数据分析与可视化】Seaborn库简介及风格设置详解(图文解释 超详细)

    需要源码和PPT请点赞关注收藏后评论区留言私信 一 Seaborn简介 Matplotlib绘图基本模仿MATLAB绘图库 其绘图风格和MATLAB类似 由于MATLAB绘图风格偏古典 因此 Python开源社区开发了Seaborn绘图模块
  • 神经网络权重是什么意思,神经网络权值和阈值

    BP神经网络中初始权值和阈值的设定 1 首先需要了解BP神经网络是一种多层前馈网络 2 以看一下在matlab中BP神经网络的训练函数 有梯度下降法traingd 弹性梯度下降法trainrp 自适应lr梯度下降法traingda等 3 在
  • 深度学习-算法的鲁棒性与稳定性解析

    文章与视频资源多平台更新 微信公众号 知乎 B站 头条 AI研习图书馆 深度学习 大数据 IT编程知识与资源分享 欢迎关注 共同进步 1 引言 鲁棒 的英文是robustness 中文译为强健 稳健 所以说算法的鲁棒性直白点说就是健壮的 稳
  • 【硬刚大数据之学习路线篇】2021年从零到大数据专家的学习指南(全面升级版)

    欢迎关注博客主页 https blog csdn net u013411339 本文由 王知无 原创 首发于 CSDN博客 本文首发CSDN论坛 未经过官方和本人允许 严禁转载 欢迎点赞 收藏 留言 欢迎留言交流 声明 本篇博客在我之前发表
  • Kong网关 入门安装与配置

    简介 Kong 是由Mashape公司开源的 基于Nginx的API gateway 特点 可扩展 支持分布式 模块化 功能 授权 日志 ip限制 限流 api 统计分析 存在商业插件Galileo等 也可自己研发 请求转化 跨域 CORS
  • java.lang.StringIndexOutOfBoundsException: String index out of range: 22

    报错 in thread main java lang StringIndexOutOfBoundsException String index out of range 22 原因 for int i 0 i lt 255 i 输入的字符
  • element ui的el-tree多选树(复选框)父子节点关联不关联的问题,选中当前节点,他的子节点和父节点是否被选中,非常详细

    element ui的el tree多选树 复选框 父子节点关联不关联的问题 选中当前节点 他的子节点和父节点是否被选中 非常详细 属性check strictly 官方文档提供属性check strictly 在显示复选框的情况下 是否严
  • SQL Server2012 安装方法详解

    欢迎大家关注我的公众号 添加我为好友 首先要找到自己下载好的安装包 并且保持网络畅通 最近有不少细心的小伙伴反应安装包有问题 我这里进行了一下更新 链接 https pan baidu com s 1bB WS zmHy ow34mU ET
  • scss的基本语法的使用

    scss 1 声明变量 声明变量符 变量名称 变量值 eg width300 300px 2 变量调用 width300 300px 声明 main width width300 调用 3 局部变量和全局变量 定义在局部的变量不会影响其他的
  • 关于不重启Tomcat自动加载改变的class文件

    修改server xml 在Host标签下加入以下配置
  • cmake 怎么设定 prefix ?

    cmake D CMAKE INSTALL PREFIX usr
  • 分页节点

    动态调度技术 分页数据库 osg PageLOD 动态调度技术 如果数据庞大 那么是不可能一次性全部载入内存的 因此需要动态调度技术 动态调度技术 在显示当前视域中的场景元素的同时 预判下一步可能载入的数据 以及那些短时间内不会被看到的数据
  • win11共享打印机无法连接怎么办

    很多小伙伴都将电脑更新升级成Win11系统 当我们使用多台电脑却只有一台打印机时 就需要共享打印机却出现了Win11共享打印机无法连接的情况 遇到这种问题应该怎么解决呢 下面小编就给大家详细介绍一下Win11共享打印机无法连接的解决方法 大
  • hexo tags-标签设置-aloha

    打开博客界面里面的 config yml进行配置 打开如下 找到类似于下面这些的代码行 Directory source dir source public dir public tag dir tags 标签 archive dir ar
  • MySQL-group_concat()

    创建表格 CREATE TABLE dept emp emp no int 11 NOT NULL dept no char 4 NOT NULL from date date NOT NULL to date date NOT NULL
  • expandableListview实现侧滑删除

    本文地址 http blog csdn net xiehao 95 article details 44628491 使用swipelistview实现侧滑删除这样Demo已经很普及了 但是项目需要 expandableListview的i
  • 复习整理 Mask R-CNN

    理解Mask R CNN 文章目录 理解Mask R CNN 前言 一 简介 基础点 名词解释 简单复习 前言 为了综合复习 Mask R CNN 写一个博客 简言之 物体检测 产生一个切割mask 识别 和FasterR CNN区别 能生
  • spark-3.1.2兼容多版本hive

    2 3 9版本Hive的支持 直接在实例化SparkSession时 启用hive支持即可 例如 val spark SparkSession builder appName Spark Hive Example config spark
  • ThinkPHP 5 框架实现多语言 实例讲解

    ThinkPHP 5 框架实现多语言 今天给大家分享一篇tp5框架多语言的实例 第一步 您需要在配置文件中开启网站多语言 并添加语言允许列表 默认语言 default lang gt zh cn 语言允许列表 lang list gt zh