Completed
Pull Request — master (#15)
by Roman
01:07
created

DetectRequestLocale::getLocaleFromRequest()   A

Complexity

Conditions 4
Paths 4

Size

Total Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 4
nc 4
nop 1
dl 0
loc 10
rs 9.9332
c 0
b 0
f 0
1
<?php
2
3
namespace ChinLeung\LaravelMultilingualRoutes;
4
5
use Closure;
6
7
class DetectRequestLocale
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
        if ($locale = $this->getLocaleFromRequest($request)) {
19
            app()->setLocale($locale);
20
        }
21
22
        return $next($request);
23
    }
24
25
    /**
26
     * Guess the locale from request query, path or headers.
27
     *
28
     * @param  \Illuminate\Http\Request  $request
29
     * @return string|null
30
     */
31
    public function getLocaleFromRequest($request): ?string
32
    {
33
        $segment = $request->query('locale') ?: $request->segment(1);
34
35
        if ($segment && in_array($segment, locales())) {
36
            return $segment;
37
        }
38
39
        return $request->getPreferredLanguage(locales());
40
    }
41
}
42