<?php namespace App\Http\Middleware; use App\Models\Language; use Auth; use Closure; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Http\Response; use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Session; class LanguageManager { /** * Handle an incoming request. * * @param Request $request * @param Closure(Request): (Response|RedirectResponse) $next * @return Response|RedirectResponse */ public function handle(Request $request, Closure $next) { try { if (Session::has('locale') && Auth::user() && Session::get('locale') == Auth::user()->language) { // Admin dashboard app()->setLocale(Session::get('locale')); } else { // When users log in to the system, make sure to set their preferred panel language. if (Auth::user()) { Session::put('locale', Auth::user()->language); Session::save(); $language = Language::where('code', Auth::user()->language)->first(); Session::put('language', $language); app()->setLocale(Auth::user()->language); } else { // Landing page if (Session::has('landing_locale')) { app()->setLocale(Session::get('landing_locale')); } else { $lang = env('APPLANG'); if (is_null($lang)) { $lang = "en"; } $language = Language::where('code', $lang)->first(); Session::put('landing_locale', $lang); Session::save(); Session::put('language', $language); app()->setLocale(Session::get('landing_locale')); } } } } catch (\Throwable $th) { if (Session::has('locale')) { app()->setLocale(Session::get('locale')); } } return $next($request); } }