feat: i18n — EN/MS/ZH translations with cookie-based locale switching, report form translated
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FFDuBhMKvoWjrWT3ZnGmmr
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
import { cookies } from 'next/headers'
|
||||
import { SUPPORTED_LOCALES, type Locale } from './locales'
|
||||
import type { Messages } from './context'
|
||||
|
||||
export async function getLocale(): Promise<Locale> {
|
||||
const cookieStore = await cookies()
|
||||
const lang = cookieStore.get('locale')?.value
|
||||
if (lang && (SUPPORTED_LOCALES as readonly string[]).includes(lang)) {
|
||||
return lang as Locale
|
||||
}
|
||||
return 'en'
|
||||
}
|
||||
|
||||
export async function loadMessages(locale: Locale): Promise<Messages> {
|
||||
switch (locale) {
|
||||
case 'ms': return (await import('../../messages/ms.json')).default as Messages
|
||||
case 'zh': return (await import('../../messages/zh.json')).default as Messages
|
||||
default: return (await import('../../messages/en.json')).default as Messages
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user