* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Flarum\Http\Middleware; use Flarum\Locale\LocaleManager; use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ServerRequestInterface as Request; use Zend\Stratigility\MiddlewareInterface; class SetLocale implements MiddlewareInterface { /** * @var LocaleManager */ protected $locales; /** * @param LocaleManager $locales */ public function __construct(LocaleManager $locales) { $this->locales = $locales; } /** * {@inheritdoc} */ public function __invoke(Request $request, Response $response, callable $out = null) { $actor = $request->getAttribute('actor'); if ($actor->exists) { $locale = $actor->getPreference('locale'); } else { $locale = array_get($request->getCookieParams(), 'locale'); } if ($locale && $this->locales->hasLocale($locale)) { $this->locales->setLocale($locale); } return $out ? $out($request, $response) : $response; } }