From 07723be8b3debd159f096be34327b79326443995 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B8lve=20Torn=C3=B8e?= Date: Wed, 6 Apr 2022 17:00:39 +0200 Subject: [PATCH] Refactor default locale prefix to support clone() (#35874) ## Bug fixes https://github.com/vercel/next.js/issues/35273 - [x] Related issues linked using `fixes #number` - [ ] Integration tests added - [ ] Errors have helpful link attached, see `contributing.md` ## Documentation / Examples - [ ] Make sure the linting passes by running `yarn lint` --- docs/advanced-features/i18n-routing.md | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/docs/advanced-features/i18n-routing.md b/docs/advanced-features/i18n-routing.md index 0a55f52ffd69..2dbe239805aa 100644 --- a/docs/advanced-features/i18n-routing.md +++ b/docs/advanced-features/i18n-routing.md @@ -170,24 +170,19 @@ import { NextRequest, NextResponse } from 'next/server' const PUBLIC_FILE = /\.(.*)$/ -const stripDefaultLocale = (str: string): string => { - const stripped = str.replace('/default', '') - return stripped -} - export function middleware(request: NextRequest) { const shouldHandleLocale = !PUBLIC_FILE.test(request.nextUrl.pathname) && !request.nextUrl.pathname.includes('/api/') && request.nextUrl.locale === 'default' - return shouldHandleLocale - ? NextResponse.redirect( - `/en${stripDefaultLocale(request.nextUrl.pathname)}${ - request.nextUrl.search - }` - ) - : undefined + if (shouldHandleLocale) { + const url = request.nextUrl.clone() + url.pathname = `/en${request.nextUrl.pathname}` + return NextResponse.redirect(url) + } + + return undefined } ```