diff --git a/src/Middleware/InternationalizationMiddleware.php b/src/Middleware/InternationalizationMiddleware.php index 3e70e54..923d65b 100644 --- a/src/Middleware/InternationalizationMiddleware.php +++ b/src/Middleware/InternationalizationMiddleware.php @@ -7,10 +7,12 @@ namespace Singularity\HDK\Core\Middleware; use Hyperf\Context\Context; use Hyperf\Contract\TranslatorInterface; use Hyperf\Di\Annotation\Inject; +use Lmc\HttpConstants\Header; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\MiddlewareInterface; use Psr\Http\Server\RequestHandlerInterface; +use Symfony\Component\HttpFoundation\Request; /** * Singularity\HDK\Utils\Middleware\InternationalizationMiddleware@HDK @@ -26,13 +28,16 @@ class InternationalizationMiddleware implements MiddlewareInterface */ #[Inject] private TranslatorInterface $translator; + /** * @inheritDoc */ public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface { - $response = Context::get(ResponseInterface::class); - $language = $request->getHeaderLine('Accept-Language'); + $req = (new Request()); + $req->headers->set(Header::ACCEPT_LANGUAGE, $request->getHeaderLine(Header::ACCEPT_LANGUAGE)); + + $language = $req->getPreferredLanguage([config('translation.locale')]); if (!empty($language)) { $language = match (strtolower($language)) { 'en', 'en_us', 'en-us', 'en-uk', 'en_uk' => 'en', @@ -40,9 +45,14 @@ class InternationalizationMiddleware implements MiddlewareInterface default => config('translation.locale'), }; $this->translator->setLocale($language); - $response = $response->withAddedHeader('Content-Language', strtr($this->translator->getLocale(), '_', '-')); - Context::set(ResponseInterface::class, $response); } + $response = Context::get(ResponseInterface::class); + $response = $response->withAddedHeader( + Header::CONTENT_LANGUAGE, + strtr($this->translator->getLocale(), '_', '-') + ); + Context::set(ResponseInterface::class, $response); + return $handler->handle($request); } }