server/app/Middleware/LanguageMiddleware.php

23 lines
774 B
PHP

<?php
namespace App\Middleware;
use Hyperf\Context\ApplicationContext;
use Hyperf\Contract\TranslatorInterface;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Server\RequestHandlerInterface;
class LanguageMiddleware implements MiddlewareInterface
{
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
{
$lang = $request->getHeaderLine('Accept-Language') ?: 'zh_cn';
$lang = str_replace('-', '_', strtolower($lang));
$translator = ApplicationContext::getContainer()->get(TranslatorInterface::class);
$translator->setLocale($lang);
return $handler->handle($request);
}
}