nyk
feat: full i18n — 1752 keys across 10 languages, all panels translated (#326)
b180108 unverified
import { getRequestConfig } from 'next-intl/server'
import { cookies, headers } from 'next/headers'
import { locales, defaultLocale, type Locale } from './config'
export default getRequestConfig(async () => {
let locale: Locale = defaultLocale
// 1. Check NEXT_LOCALE cookie
const cookieStore = await cookies()
const cookieLocale = cookieStore.get('NEXT_LOCALE')?.value as Locale | undefined
if (cookieLocale && locales.includes(cookieLocale)) {
locale = cookieLocale
} else {
// 2. Fall back to Accept-Language header
const headerStore = await headers()
const acceptLang = headerStore.get('accept-language') || ''
const preferred = acceptLang
.split(',')
.map((part) => part.split(';')[0].trim().substring(0, 2).toLowerCase())
.find((code) => locales.includes(code as Locale))
if (preferred) {
locale = preferred as Locale
}
}
return {
locale,
messages: (await import(`../../messages/${locale}.json`)).default,
}
})