使用JSON文件时Laravel本地化功能失效求助
Laravel 8 JSON翻译不生效问题排查
环境配置
PHP 8、Laravel 8
问题描述
使用Laravel「以翻译字符串为键」的JSON翻译方式时无法生效,但「短键」常规翻译方式可正常工作。
相关代码
dashboard.blade.php
<x-app-layout> <x-slot name="header"> <h2 class="font-semibold text-xl text-gray-800 leading-tight"> {{ __('Dashboard') }} </h2> </x-slot> <div class="py-12"> <div class="max-w-7xl mx-auto sm:px-6 lg:px-8"> <div class="bg-white overflow-hidden shadow-sm sm:rounded-lg"> <div class="p-6 bg-white border-b border-gray-200"> You're logged in! {{ app()->getLocale() ." : " . __('30 Days') }} </div> <div class="p-6 bg-white border-b border-gray-200"> You're logged in! {{ app()->getLocale() ." : " . trans('30 Days') }} </div> <div class="p-6 bg-white border-b border-gray-200"> You're logged in! {{ app()->getLocale() ." : " . Lang::get('30 Days') }} </div> <div class="p-6 bg-white border-b border-gray-200"> You're logged in! {{ app()->getLocale() ." : " . __('auth.failed') }} </div> <div class="p-6 bg-white border-b border-gray-200"> You're logged in! {{ app()->getLocale() ." : " . trans('auth.failed') }} </div> <div class="p-6 bg-white border-b border-gray-200"> You're logged in! {{ app()->getLocale() ." : " . Lang::get('auth.failed') }} </div> </div> </div> </div>
auth.php(resources/lang/de/auth.php)
return [ 'failed' => 'Diese Kombination aus Zugangsdaten wurde nicht in unserer Datenbank gefunden.', 'password' => 'Das eingegebene Passwort ist nicht korrekt.', 'throttle' => 'Zu viele Loginversuche. Versuchen Sie es bitte in :seconds Sekunden nochmal.', ];
de.json(resources/lang/de.json)
{ "30 Days": "30 Tage", "60 Days": "60 Tage", "90 Days": "90 Tage", ":amount Total": ":amount Gesamt" // 注意:需移除末尾多余逗号,保证JSON格式合法 }
效果截图
英文Locale状态

德文Locale状态

解决方法
- 检查JSON文件位置:确保
de.json直接放在resources/lang/根目录下,不能放在子文件夹中,Laravel 8会自动读取该目录下的JSON翻译文件。 - 修复JSON格式:删除JSON文件末尾多余的逗号,可使用在线JSON校验工具确认文件语法完全合法。
- 清除缓存:执行以下命令清除配置、翻译及视图缓存:
php artisan config:clear php artisan cache:clear php artisan view:clear - 确认Locale设置:检查
.env文件中APP_LOCALE是否设为de,或通过代码手动设置:app()->setLocale('de'); - 严格匹配字符串:确保翻译调用的字符串与JSON键完全一致,包括空格、大小写,无额外字符。
内容的提问来源于stack exchange,提问作者coderdonezo
相关产品推荐
相关产品推荐

