3
3
use Closure ;
4
4
use Illuminate \Http \RedirectResponse ;
5
5
use Illuminate \Support \Facades \Cookie ;
6
+ use Mcamara \LaravelLocalization \LanguageNegotiator ;
6
7
7
8
class LocaleCookieRedirect extends LaravelLocalizationMiddlewareBase
8
9
{
@@ -15,39 +16,49 @@ class LocaleCookieRedirect extends LaravelLocalizationMiddlewareBase
15
16
*
16
17
* @return mixed
17
18
*/
18
- public function handle ($ request , Closure $ next ) {
19
- // If the URL of the request is in exceptions.
20
- if ($ this ->shouldIgnore ($ request )) {
21
- return $ next ($ request );
22
- }
19
+ public function handle ($ request , Closure $ next )
20
+ {
21
+ // If the URL of the request is in exceptions.
22
+ if ($ this ->shouldIgnore ($ request )) {
23
+ return $ next ($ request );
24
+ }
23
25
24
- $ params = explode ('/ ' , $ request ->path ());
25
- $ locale = $ request ->cookie ('locale ' , false );
26
+ $ params = explode ('/ ' , $ request ->path ());
27
+ $ locale = $ request ->cookie ('locale ' , false );
26
28
27
- if (\count ($ params ) > 0 && app ('laravellocalization ' )->checkLocaleInSupportedLocales ($ params [0 ])) {
29
+ if (\count ($ params ) > 0 && app ('laravellocalization ' )->checkLocaleInSupportedLocales ($ params [0 ])) {
28
30
return $ next ($ request )->withCookie (cookie ()->forever ('locale ' , $ params [0 ]));
29
- }
30
- elseif (empty ($ locale ) && app ('laravellocalization ' )->hideUrlAndAcceptHeader ()){
31
- // When default locale is hidden and accept language header is true,
32
- // then compute browser language when no session has been set.
33
- // Once the session has been set, there is no need
34
- // to negotiate language from browser again.
35
- $ negotiator = new LanguageNegotiator (app ('laravellocalization ' )->getDefaultLocale (), app ('laravellocalization ' )->getSupportedLocales (), $ request );
36
- $ locale = $ negotiator ->negotiateLanguage ();
37
- Cookie::queue (Cookie::forever ('locale ' , $ locale ));
38
- }
39
-
40
- if ($ locale === false ){
41
- $ locale = app ('laravellocalization ' )->getCurrentLocale ();
42
- }
43
-
44
- if ($ locale && app ('laravellocalization ' )->checkLocaleInSupportedLocales ($ locale ) && !(app ('laravellocalization ' )->isHiddenDefault ($ locale ))) {
45
- $ redirection = app ('laravellocalization ' )->getLocalizedURL ($ locale );
46
- $ redirectResponse = new RedirectResponse ($ redirection , 302 , ['Vary ' => 'Accept-Language ' ]);
47
-
48
- return $ redirectResponse ->withCookie (cookie ()->forever ('locale ' , $ params [0 ]));
49
- }
50
-
51
- return $ next ($ request );
52
- }
31
+ }
32
+
33
+ if (empty ($ locale ) && app ('laravellocalization ' )->hideUrlAndAcceptHeader ()){
34
+ // When default locale is hidden and accept language header is true,
35
+ // then compute browser language when no session has been set.
36
+ // Once the session has been set, there is no need
37
+ // to negotiate language from browser again.
38
+ $ negotiator = new LanguageNegotiator (
39
+ app ('laravellocalization ' )->getDefaultLocale (),
40
+ app ('laravellocalization ' )->getSupportedLocales (),
41
+ $ request
42
+ );
43
+ $ locale = $ negotiator ->negotiateLanguage ();
44
+ Cookie::queue (Cookie::forever ('locale ' , $ locale ));
45
+ }
46
+
47
+ if ($ locale === false ){
48
+ $ locale = app ('laravellocalization ' )->getCurrentLocale ();
49
+ }
50
+
51
+ if (
52
+ $ locale &&
53
+ app ('laravellocalization ' )->checkLocaleInSupportedLocales ($ locale ) &&
54
+ !(app ('laravellocalization ' )->isHiddenDefault ($ locale ))
55
+ ) {
56
+ $ redirection = app ('laravellocalization ' )->getLocalizedURL ($ locale );
57
+ $ redirectResponse = new RedirectResponse ($ redirection , 302 , ['Vary ' => 'Accept-Language ' ]);
58
+
59
+ return $ redirectResponse ->withCookie (cookie ()->forever ('locale ' , $ params [0 ]));
60
+ }
61
+
62
+ return $ next ($ request );
63
+ }
53
64
}
0 commit comments