translator = $translator; } /** * Process an incoming server request and return a response, optionally delegating * to the next middleware component to create the response. * * @param Request $request * @param DelegateInterface $delegate * * @return Response */ public function process(Request $request, DelegateInterface $delegate): Response { if (! $request->hasHeader(self::ACCEPT_LANGUAGE)) { return $delegate->handle($request); } $locale = $request->getHeaderLine(self::ACCEPT_LANGUAGE); $this->translator->setLocale($this->normalizeLocale($locale)); return $delegate->handle($request); } private function normalizeLocale(string $locale): string { $parts = explode('_', $locale); if (count($parts) > 1) { return $parts[0]; } $parts = explode('-', $locale); if (count($parts) > 1) { return $parts[0]; } return $locale; } }