1 <?php namespace BookStack\Http\Middleware;
5 use Illuminate\Http\Request;
10 protected $rtlLocales = ['ar'];
13 * Handle an incoming request.
15 * @param \Illuminate\Http\Request $request
16 * @param \Closure $next
19 public function handle($request, Closure $next)
21 $defaultLang = config('app.locale');
23 if (user()->isDefault() && config('app.auto_detect_locale')) {
24 $locale = $this->autoDetectLocale($request, $defaultLang);
26 $locale = setting()->getUser(user(), 'language', $defaultLang);
30 if (in_array($locale, $this->rtlLocales)) {
31 config()->set('app.rtl', true);
34 app()->setLocale($locale);
35 Carbon::setLocale($locale);
36 return $next($request);
40 * Autodetect the visitors locale by matching locales in their headers
41 * against the locales supported by BookStack.
42 * @param Request $request
43 * @param string $default
46 protected function autoDetectLocale(Request $request, string $default)
48 $availableLocales = config('app.locales');
49 foreach ($request->getLanguages() as $lang) {
50 if (in_array($lang, $availableLocales)) {