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

Laravel 8新增bn语言包报Undefined array key "bn"错误如何解决

解决方案

按以下顺序排查修复即可解决报错:

  • 第一步:清除Laravel配置缓存
    你修改了config目录下的配置文件后,Laravel默认会读取已缓存的旧配置,运行以下命令清除配置缓存:
    php artisan config:clear
    
    同步清除路由、视图缓存避免其他缓存冲突:
    php artisan route:clear
    php artisan view:clear
    
  • 第二步:补充LocaleController参数校验
    你的控制器没有对传入的语言码做合法性校验,异常的非法参数也会引发数组键不存在报错,修改控制器代码如下:
    <?php
    
    namespace App\Http\Controllers;
    
    /**
    * Class LocaleController.
    */
    class LocaleController
    {
      /**
       * @param $locale
       * @return \Illuminate\Http\RedirectResponse
       */
      public function change($locale)
      {
          // 校验语言码是否在可用配置中
          if (!array_key_exists($locale, config('boilerplate.locale.languages'))) {
              abort(404);
          }
          
          app()->setLocale($locale);
          session()->put('locale', $locale);
    
          return redirect()->back();
      }
    }
    
  • 第三步:优化语言下拉菜单渲染逻辑
    你当前用到的getLocaleName辅助函数如果没有内置bn语言的映射,也会引发数组键不存在报错,直接用配置文件里的name字段更稳妥,修改lang.blade.php代码:
    <div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdownLanguageLink">
        @foreach(collect(config('boilerplate.locale.languages'))->sortBy('name') as $code => $details)
            @if($code !== app()->getLocale())
                <x-utils.link class="dropdown-item pt-1 pb-1" :href="route('locale.change', $code)" :text="__($details['name'])" />
            @endif
        @endforeach
    </div><!--dropdown-menu-->
    
  • 第四步:检查LocaleMiddleware逻辑
    确认你的App\Http\Middleware\LocaleMiddleware中判断语言合法性时,读取的是boilerplate.locale.languages配置数组,而非其他硬编码的语言列表,避免出现配置已加但中间件未识别的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 20:15:01