<?php namespace App\Http\Middleware; use Closure; use Illuminate\Http\Request; use Symfony\Component\HttpFoundation\Response; use Illuminate\Support\Facades\URL; class LangControl { /** * Handle an incoming request. * * @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next */ public function handle(Request $request, Closure $next): Response { $segments = $request->segments(); if (strlen($segments[0]) == 2 && preg_match('/[A-Za-z]/', $segments[0])) { app()->setLocale($segments[0]); } else { app()->setLocale(config('app.locale')); } array_shift($segments); $url = \request()->path(); $url = str_replace(app()->getLocale(), '', $url); // Modify the request $newPath = '/' . implode('/', $segments); $newUrl = $request->root() . $newPath . ($request->getQueryString() ? '?'.$request->getQueryString() : ''); $request->server->set('REQUEST_URI', $newPath); $request->initialize( $request->query->all(), $request->request->all(), $request->attributes->all(), $request->cookies->all(), $request->files->all(), $request->server->all() ); return $next($request); } }