diff --git a/routes/web.php b/routes/web.php index 1707ff4..6b296a7 100644 --- a/routes/web.php +++ b/routes/web.php @@ -137,15 +137,22 @@ Route::match(['get', 'post'], '/locale/{lang}', function (Request $request, stri abort(404); } $request->session()->put('locale', $lang); - $request->session()->save(); // force write to session store before redirecting + $request->session()->save(); if ($u = $request->user()) { $u->forceFill(['locale' => $lang])->saveQuietly(); } - // Prefer explicit redirect from query, otherwise fall back to referer / homepage $to = $request->query('redirect') ?: $request->header('referer') ?: '/'; - return redirect($to); + + // Also set a persistent cookie as fallback — sessions can be regenerated, + // scoped per-subdomain differently, or lost on error pages. Cookie survives + // every kind of session issue. + return redirect($to)->cookie( + 'app_locale', $lang, + 60 * 24 * 365, // 1 year + '/', null, false, false // path, domain, secure, httpOnly + ); })->name('locale.switch'); // PWA — manifest pentru panou central (service.mir.md).