feat: lang middleware and filament translations

This commit is contained in:
2026-05-21 14:57:52 +02:00
parent f24999d7fb
commit 52a2104fdf
16 changed files with 316 additions and 95 deletions
+45
View File
@@ -0,0 +1,45 @@
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
class SetLocale
{
/**
* Handle an incoming request.
*
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
*/
public function handle(Request $request, Closure $next): Response
{
app()->setLocale($this->resolveLocale($request));
return $next($request);
}
private function resolveLocale(Request $request): string
{
$supportedLocales = config('app.supported_locales', ['fr', 'en']);
$requestedLocale = $request->query('locale') ?: $request->header('X-Locale');
if (is_string($requestedLocale)) {
$normalizedLocale = $this->normalizeLocale($requestedLocale);
if (in_array($normalizedLocale, $supportedLocales, true)) {
return $normalizedLocale;
}
}
return $request->getPreferredLanguage($supportedLocales) ?? config('app.locale');
}
private function normalizeLocale(string $locale): string
{
$locale = strtolower(str_replace('_', '-', $locale));
return explode('-', $locale)[0];
}
}