1
- import { NextResponse } from ' next/server'
2
- import type { NextRequest } from ' next/server'
1
+ import { NextResponse } from " next/server" ;
2
+ import type { NextRequest } from " next/server" ;
3
3
4
- const supportedLanguages = [ 'en' , 'ko' ]
4
+ const supportedLanguages = [ "en" , "ko" ] ;
5
5
6
6
function getPreferredLanguage ( request : NextRequest ) : string {
7
- const acceptLanguage = request . headers . get ( ' accept-language' )
8
- if ( ! acceptLanguage ) return 'en'
9
-
10
- const langs = acceptLanguage . split ( ',' ) . map ( lang => lang . split ( ';' ) [ 0 ] )
7
+ const acceptLanguage = request . headers . get ( " accept-language" ) ;
8
+ if ( ! acceptLanguage ) return "en" ;
9
+
10
+ const langs = acceptLanguage . split ( "," ) . map ( ( lang ) => lang . split ( ";" ) [ 0 ] ) ;
11
11
for ( const lang of langs ) {
12
- const shortLang = lang . slice ( 0 , 2 ) . toLowerCase ( )
12
+ const shortLang = lang . slice ( 0 , 2 ) . toLowerCase ( ) ;
13
13
if ( supportedLanguages . includes ( shortLang ) ) {
14
- return shortLang
14
+ return shortLang ;
15
15
}
16
16
}
17
- return 'en'
17
+ return "en" ;
18
18
}
19
19
20
20
export function middleware ( request : NextRequest ) {
21
- const { pathname } = request . nextUrl
21
+ const { pathname } = request . nextUrl ;
22
22
23
23
if ( pathname . match ( / \. ( s v g | p n g | j p g | j p e g | g i f | i c o ) $ / ) ) {
24
- return NextResponse . next ( )
24
+ return NextResponse . next ( ) ;
25
25
}
26
-
27
- if ( supportedLanguages . some ( lang => pathname . startsWith ( `/${ lang } /` ) || pathname === `/${ lang } ` ) ) {
28
- return NextResponse . next ( )
26
+
27
+ if (
28
+ supportedLanguages . some (
29
+ ( lang ) => pathname . startsWith ( `/${ lang } /` ) || pathname === `/${ lang } ` ,
30
+ )
31
+ ) {
32
+ return NextResponse . next ( ) ;
29
33
}
30
34
31
- const lang = getPreferredLanguage ( request )
35
+ const lang = getPreferredLanguage ( request ) ;
36
+
37
+ const newUrl = new URL ( `/${ lang } ${ pathname } ` , request . url ) ;
32
38
33
- const newUrl = new URL ( `/${ lang } ${ pathname } ` , request . url )
34
-
35
- return NextResponse . redirect ( newUrl )
39
+ return NextResponse . redirect ( newUrl ) ;
36
40
}
37
41
38
42
export const config = {
39
- matcher : [
40
- '/((?!api|_next/static|_next/image|favicon.ico).*)' ,
41
- ] ,
42
- }
43
+ matcher : [ "/((?!api|_next/static|_next/image|favicon.ico).*)" ] ,
44
+ } ;
0 commit comments