['en', 'en_US', 'en_AU', 'en_CA', 'en_GB', 'en-US', 'en-AU', 'en-CA', 'en-GB'], 'zh_CN' => ['zh_CN', 'zh_HK', 'zh_TW', 'zh_SG', 'zh-CN', 'zh-HK', 'zh-TW', 'zh-SG'], ]; /** * @throws \Exception */ public function process(Request $request, callable $handler): Response { $lang = $request->header('Accept-Language', config('app.lang')); $langPrefix = substr($lang, 0, 2); if (array_key_exists($langPrefix, self::LANG_MAP)) { $locale = self::LANG_MAP[$langPrefix][0]; // 默认选择第一个匹配的语言 } else { $locale = config('app.lang'); } // 设置会话中的语言 session('lang', $locale); locale($locale); return $handler($request); } }