`,即 `app()->getLocale()`)。 * * 匹配不上就用 `config('mint.default_language')`。Problem Details 的 `title` 按 RFC 9457 * 保持稳定英文,不受这里影响;本地化的是 `detail` 与 `errors`。 */ class NegotiateLocale extends SetLocale { public function handle(Request $request, Closure $next): Response { $supported = array_keys(config('mint.languages')); // 兜底用 mint.default_language 而不是 app.locale:App::setLocale() 会顺带改写 // config('app.locale'),常驻进程(Octane、队列)里上一个请求的语言会串到下一个 App::setLocale($this->getBrowserLocale($request, $supported) ?? config('mint.default_language', 'en')); $response = $next($request); // 响应随 Accept-Language 而变,告诉缓存别混用 $response->headers->set('Vary', trim($response->headers->get('Vary').', Accept-Language', ', ')); $response->headers->set('Content-Language', App::getLocale()); return $response; } }