У меня есть пакет, который определяет страну юзера по его апи и исходя из этой страны я хочу переключать на нужный язык. Так что я создал миддлвар
LocalizationMiddleware
и вставил его в список веб миддлваров
protected $middlewareGroups = [
'web' => [
...,
\App\Http\Middleware\LocalizationMiddleware::class
],
Сам миддлвар выглядит так, что я вызваю метод
Location::get($ip)
и исходя из свойства
countryName
достаю страну, и через множество if устанавливаю нужный язык:
$currentUserCountry = Location::get($ip);
$country = $currentUserCountry->countryName;
if($country == /*страна*/){
app()->setLocale('/*язык*/');
session()->put('locale', '/*язык*/');
}
Проблема в том, что теперь этот миддлвар будет запускаться каждый раз, даже если юзер переключит язык на другой, ему установится тот, который подходит его стране. же хочу, чтобы этот миддлвар (или какая либо функция) вызывался только один раз, когда юзер зайдет на сайт, как это лучше всего реализовать?