feat(admin-i18n): add cookie-based locale runtime and switcher baseline
This commit is contained in:
20
apps/admin/src/i18n/server.ts
Normal file
20
apps/admin/src/i18n/server.ts
Normal file
@@ -0,0 +1,20 @@
|
||||
import { type AppLocale, defaultLocale, isAppLocale } from "@cms/i18n"
|
||||
import { cookies } from "next/headers"
|
||||
|
||||
import type { AdminMessages } from "./messages"
|
||||
import { ADMIN_LOCALE_COOKIE } from "./shared"
|
||||
|
||||
export async function resolveAdminLocale(): Promise<AppLocale> {
|
||||
const cookieStore = await cookies()
|
||||
const value = cookieStore.get(ADMIN_LOCALE_COOKIE)?.value
|
||||
|
||||
if (value && isAppLocale(value)) {
|
||||
return value
|
||||
}
|
||||
|
||||
return defaultLocale
|
||||
}
|
||||
|
||||
export async function getAdminMessages(locale: AppLocale): Promise<AdminMessages> {
|
||||
return (await import(`../messages/${locale}.json`)).default as AdminMessages
|
||||
}
|
||||
Reference in New Issue
Block a user