26 lines
805 B
TypeScript
26 lines
805 B
TypeScript
import createMiddleware from 'next-intl/middleware'
|
|
import {NextFetchEvent, NextRequest, NextResponse} from 'next/server'
|
|
|
|
import {routing} from '@/i18n/routing'
|
|
import {HEADERS} from '@/lib/config/http'
|
|
import {translatableRoutesRegEx} from '@/lib/config/routes'
|
|
import {type CustomMiddleware} from '@/middlewares/chain'
|
|
|
|
export function withI18nMiddleware(middleware: CustomMiddleware) {
|
|
return async (
|
|
request: NextRequest,
|
|
event: NextFetchEvent,
|
|
response: NextResponse
|
|
) => {
|
|
if (request.nextUrl.pathname.match(translatableRoutesRegEx) !== null) {
|
|
response = createMiddleware(routing)(request)
|
|
}
|
|
|
|
let locale =
|
|
request.cookies.get('NEXT_LOCALE')?.value ?? routing.defaultLocale
|
|
response.headers.set(HEADERS.xSiteLocale, locale)
|
|
|
|
return middleware(request, event, response)
|
|
}
|
|
}
|