Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FFDuBhMKvoWjrWT3ZnGmmr
21 lines
747 B
TypeScript
21 lines
747 B
TypeScript
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
|
|
}
|
|
}
|