20 lines
780 B
PHP
20 lines
780 B
PHP
<?php
|
|
namespace Modules\Localization\Http\Middleware;
|
|
use Closure;
|
|
use Illuminate\Http\Request;
|
|
use Modules\Localization\Models\Locale;
|
|
use Symfony\Component\HttpFoundation\Response;
|
|
final class SetLocale
|
|
{
|
|
public function handle(Request $request, Closure $next): Response
|
|
{
|
|
$code = $request->route('locale') ?: $request->session()->get(config('localization.session_key'));
|
|
if (! $code) { $code = Locale::query()->where('is_default', true)->value('code') ?: config('localization.default_locale'); }
|
|
if (Locale::query()->where('code', $code)->where('is_active', true)->exists()) {
|
|
app()->setLocale($code);
|
|
$request->session()->put(config('localization.session_key'), $code);
|
|
}
|
|
return $next($request);
|
|
}
|
|
}
|