aboutsummaryrefslogtreecommitdiff
path: root/lib/classes/JsonApi/Middlewares/Language.php
blob: 547e9f04e2f9657beb5bc61e8ec5fbc7a810b7f5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
namespace JsonApi\Middlewares;

use Negotiation\LanguageNegotiator;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Server\RequestHandlerInterface as RequestHandler;

/**
 * This class defines a middleware that tries to set the language for Stud.IP
 * by analyzing the HTTP header "Accept-Language".
 *
 * @author Jan-Hendrik Willms <tleilax+studip@gmail.com>
 */
final class Language implements MiddlewareInterface
{
    /**
     * @param Request        $request das Request-Objekt
     * @param RequestHandler $handler der PSR-15 Request Handler
     *
     * @return ResponseInterface das neue Response-Objekt
     */
    public function process(Request $request, RequestHandler $handler): ResponseInterface
    {
        $language = $_SESSION['_language'] ?? get_accepted_languages($request);

        init_i18n($language);
        $_SESSION['_language'] = $language;

        return $handler->handle($request);
    }
}