4. Internationalization와 i18n
Middleware (/src/middleware.ts)
import createMiddleware from 'next-intl/middleware'
import { NextRequest } from 'next/server'
import { locales } from './navigation'
/**
* 국제화 (i18n)
* ko-KR : Korean (Korea)
* en-US : English (United States)
* zh-CN : Chinese (S)
* zh-TW : Chinese (T)
* ja-JP : Japanese (Japan)
*/
export default async function middleware(request: NextRequest) {
const acceptLanguage = request.headers.get('accept-language') || process.env.DEFAULT_LOCALE
const defaultLocales = locales.filter((locale) => {
if (acceptLanguage.startsWith(locale)) return true
else return false
})
const defaultLocale = defaultLocales[0] || process.env.DEFAULT_LOCALE
const handleI18nRouting = createMiddleware({
locales,
defaultLocale,
localePrefix: process.env.LOCALE_PREFIX || ('always' as any),
localeDetection: true
})
const response = handleI18nRouting(request)
if (response.cookies.get('NEXT_LOCALE' as any)) {
response.cookies.delete('NEXT_LOCALE' as any)
}
return response
}
export const config = {
matcher: ['/((?!api|_next|.*\\..*).*)']
}message (/src/data/i18n)
/src/i18n.ts
/src/data

Server에서 사용 방법
Client에서 사용 방법
Navigation
마지막 업데이트