SetUserLanguage.php 930 B

1234567891011121314151617181920212223242526272829303132
  1. <?php
  2. namespace App\Http\Middleware;
  3. use Closure;
  4. use Illuminate\Http\Request;
  5. use Symfony\Component\HttpFoundation\Response;
  6. use Illuminate\Support\Facades\App;
  7. use App\DTO\UserLanguageDTO;
  8. use App\Enums\UserLanguageSource;
  9. use Illuminate\Support\Facades\Log;
  10. class SetUserLanguage
  11. {
  12. /**
  13. * Handle an incoming request.
  14. *
  15. * @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
  16. */
  17. public function handle(Request $request, Closure $next): Response
  18. {
  19. $language = substr($request->header('Accept-Language'), 0, 2);
  20. try {
  21. $language = UserLanguageDTO::fromString($language)->language;
  22. App::setLocale($language);
  23. } catch (\InvalidArgumentException $e) {
  24. Log::error("message: {$e->getMessage()}");
  25. $language = UserLanguageSource::English;
  26. }
  27. return $next($request);
  28. }
  29. }