]> BookStack Code Mirror - bookstack/blob - app/Http/Middleware/Localization.php
Adds and fixes pt_BR strings
[bookstack] / app / Http / Middleware / Localization.php
1 <?php namespace BookStack\Http\Middleware;
2
3 use Carbon\Carbon;
4 use Closure;
5 use Illuminate\Http\Request;
6
7 class Localization
8 {
9     /**
10      * Handle an incoming request.
11      *
12      * @param  \Illuminate\Http\Request  $request
13      * @param  \Closure  $next
14      * @return mixed
15      */
16     public function handle($request, Closure $next)
17     {
18         $defaultLang = config('app.locale');
19
20         if (user()->isDefault() && config('app.auto_detect_locale')) {
21             $locale = $this->autoDetectLocale($request, $defaultLang);
22         } else {
23             $locale = setting()->getUser(user(), 'language', $defaultLang);
24         }
25
26         app()->setLocale($locale);
27         Carbon::setLocale($locale);
28         return $next($request);
29     }
30
31     /**
32      * Autodetect the visitors locale by matching locales in their headers
33      * against the locales supported by BookStack.
34      * @param Request $request
35      * @param string $default
36      * @return string
37      */
38     protected function autoDetectLocale(Request $request, string $default)
39     {
40         $availableLocales = config('app.locales');
41         foreach ($request->getLanguages() as $lang) {
42             if (in_array($lang, $availableLocales)) {
43                 return $lang;
44             }
45         }
46         return $default;
47     }
48 }