@@ -16,14 +16,12 @@ class SetUserLocale
16
16
*/
17
17
public function handle (Request $ request , Closure $ next ): Response
18
18
{
19
- // Priority 1: User's saved locale preference
20
19
if ($ userLocale = $ request ->user ()?->locale) {
21
20
App::setLocale ($ userLocale );
22
21
23
22
return $ next ($ request );
24
23
}
25
24
26
- // Priority 2: Session locale (for guest users who changed language)
27
25
if ($ sessionLocale = $ request ->session ()->get ('locale ' )) {
28
26
if (in_array ($ sessionLocale , $ this ->getSupportedLocales ())) {
29
27
App::setLocale ($ sessionLocale );
@@ -32,7 +30,6 @@ public function handle(Request $request, Closure $next): Response
32
30
}
33
31
}
34
32
35
- // Priority 3: Browser language preferences
36
33
$ this ->setLocaleFromBrowser ($ request );
37
34
38
35
return $ next ($ request );
@@ -47,23 +44,22 @@ private function setLocaleFromBrowser(Request $request): void
47
44
$ supportedLocales = $ this ->getSupportedLocales ();
48
45
49
46
foreach ($ browserLocales as $ browserLocale ) {
50
- // Try exact match first (e.g., en-US)
51
47
$ normalizedLocale = str_replace ('_ ' , '- ' , strtolower ($ browserLocale ));
48
+
52
49
if (in_array ($ normalizedLocale , $ supportedLocales )) {
53
50
App::setLocale ($ normalizedLocale );
54
51
55
52
return ;
56
53
}
57
54
58
- // Try language code only (e.g., en from en-US)
59
55
$ languageCode = strtolower (substr ($ browserLocale , 0 , 2 ));
56
+
60
57
if (in_array ($ languageCode , $ supportedLocales )) {
61
58
App::setLocale ($ languageCode );
62
59
63
60
return ;
64
61
}
65
62
66
- // Try to find a supported locale that starts with the language code
67
63
foreach ($ supportedLocales as $ supportedLocale ) {
68
64
if (str_starts_with ($ supportedLocale , $ languageCode .'- ' )) {
69
65
App::setLocale ($ supportedLocale );
@@ -73,7 +69,6 @@ private function setLocaleFromBrowser(Request $request): void
73
69
}
74
70
}
75
71
76
- // Fallback to default locale if no match found
77
72
App::setLocale (config ('app.locale ' ));
78
73
}
79
74
0 commit comments