Laravel是否支持__()/trans()嵌套?本地化参数失效问题
Laravel 9 本地化嵌套调用问题解答
Laravel 9完全支持本地化函数(__()/trans())的嵌套调用,你遇到的失效问题并非框架不支持该用法,大概率是配置或操作细节出错,以下是排查和解决方向:
可能的问题与解决步骤
1. 语言文件键名匹配错误
确保嵌套调用的翻译键在对应语言的JSON文件中存在:
- 比如
en.json需包含:{ "messages_success": ":action :name successfully", "created": "Created" } - 目标语言文件(如
zh-CN.json)需同步添加对应键值:{ "messages_success": ":name 已:action成功", "created": "创建" }
2. 当前Locale设置异常
检查应用当前使用的语言环境是否正确:
- 临时切换Locale测试:
// 在控制器中临时设置 App::setLocale('zh-CN'); - 若通过中间件或配置文件设置Locale,需确认逻辑未导致Locale重置为默认的
en。
3. 本地化缓存未清除
Laravel会缓存语言文件内容,修改翻译文件后必须清除缓存:
php artisan cache:clear php artisan config:clear
4. 变量占位符格式错误
主翻译条目的变量占位符需与传入的参数名严格一致,比如主条目是:action,参数键就必须是action,大小写敏感。
正确用法示例
控制器代码:
__('messages_success', ['name' => 'Fleet', 'action' => __('created')])
- 当Locale为
en时,输出:Created Fleet successfully - 当Locale为
zh-CN时,输出:Fleet 已创建成功
内容的提问来源于stack exchange,提问作者hijoem
相关产品推荐
相关产品推荐

