Skip to content
Snippets Groups Projects
Forked from Stud.IP / Stud.IP
3307 commits behind, 103 commits ahead of the upstream repository.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
Language.php 1.01 KiB
<?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);
    }
}