You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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状态

en locale

德文Locale状态

de locale

解决方法

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

内容的提问来源于stack exchange,提问作者coderdonezo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 20:05:27