如何设置ThinkPHP语言中间件实现自动加载多语言?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1010个文字,预计阅读时间需要5分钟。
在Lang中,中间件不会自动生效,必须手动注册到全局中间件列表中。否则,语言包根目录不会加载,也不会返回原始键名。
Lang中间件必须显式注册到 app/middleware.php
ThinkPHP 不会默认启用多语言中间件,哪怕你把语言包放对了位置、配置也写全了,只要没注册,整个流程就卡在第一步。
常见错误现象:lang('hello') 始终返回 'hello',日志无报错,调试时 Lang::range() 返回空数组。
- 打开
app/middleware.php,确认数组中包含\think\middleware\Lang::class(不是注释状态) - 多应用模式下,需在对应应用目录下的
middleware.php单独注册,不能只改根目录 - 别和
\think\middleware\LoadLangPack混用——V6.0+ 已弃用该类,Lang中间件已内置自动加载逻辑
语言包路径和命名必须严格符合 lang/{lang}/common.php 格式
ThinkPHP 只按固定路径规则加载语言包:小写字母 + 连字符格式的 locale 目录名,内含返回数组的 PHP 文件。任何偏差都会静默失败。
立即学习“PHP免费学习笔记(深入)”;
常见错误现象:Language file not exists 报错,或切换语言后翻译不更新。
本文共计1010个文字,预计阅读时间需要5分钟。
在Lang中,中间件不会自动生效,必须手动注册到全局中间件列表中。否则,语言包根目录不会加载,也不会返回原始键名。
Lang中间件必须显式注册到 app/middleware.php
ThinkPHP 不会默认启用多语言中间件,哪怕你把语言包放对了位置、配置也写全了,只要没注册,整个流程就卡在第一步。
常见错误现象:lang('hello') 始终返回 'hello',日志无报错,调试时 Lang::range() 返回空数组。
- 打开
app/middleware.php,确认数组中包含\think\middleware\Lang::class(不是注释状态) - 多应用模式下,需在对应应用目录下的
middleware.php单独注册,不能只改根目录 - 别和
\think\middleware\LoadLangPack混用——V6.0+ 已弃用该类,Lang中间件已内置自动加载逻辑
语言包路径和命名必须严格符合 lang/{lang}/common.php 格式
ThinkPHP 只按固定路径规则加载语言包:小写字母 + 连字符格式的 locale 目录名,内含返回数组的 PHP 文件。任何偏差都会静默失败。
立即学习“PHP免费学习笔记(深入)”;
常见错误现象:Language file not exists 报错,或切换语言后翻译不更新。

