|
|
|
<?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]);
|
|
|
|
|
|
|
|
$request->attributes->set('set_lang', true);
|
|
|
|
\Session::put('locate',app()->getLocale());
|
|
|
|
\Session::save();
|
|
|
|
} 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->initialize(
|
|
|
|
$request->query->all(),
|
|
|
|
$request->request->all(),
|
|
|
|
$request->attributes->all(),
|
|
|
|
$request->cookies->all(),
|
|
|
|
$request->files->all(),
|
|
|
|
$request->server->all()
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return $next($request);
|
|
|
|
}
|
|
|
|
}
|