SetLocale.php 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. <?php
  2. namespace App\Http\Middleware;
  3. use App\Settings\LocaleSettings;
  4. use Closure;
  5. use Illuminate\Http\Request;
  6. use Illuminate\Support\Facades\App;
  7. use Illuminate\Support\Facades\Session;
  8. class SetLocale
  9. {
  10. private $locale_settings;
  11. public function __construct(LocaleSettings $locale_settings)
  12. {
  13. $this->locale_settings = $locale_settings;
  14. }
  15. /**
  16. * Handle an incoming request.
  17. *
  18. * @param Request $request
  19. * @param Closure $next
  20. * @return mixed
  21. */
  22. public function handle($request, Closure $next)
  23. {
  24. if (Session::has('locale')) {
  25. $locale = Session::get('locale', $this->locale_settings->default);
  26. } else {
  27. if (!$this->locale_settings->dynamic) {
  28. $locale = $this->locale_settings->default;
  29. } else {
  30. $locale = substr($request->server('HTTP_ACCEPT_LANGUAGE'), 0, 2);
  31. if (! in_array($locale, explode(',', $this->locale_settings->available))) {
  32. $locale = $this->locale_settings->default;
  33. }
  34. }
  35. }
  36. App::setLocale($locale);
  37. return $next($request);
  38. }
  39. }