Files
web/i18n/index.ts
2024-06-05 13:25:10 +02:00

34 lines
653 B
TypeScript

import "server-only"
import { createIntl, createIntlCache } from "@formatjs/intl"
import { headers } from "next/headers"
import { Lang } from "@/constants/languages"
const cache = createIntlCache()
async function initIntl(lang: Lang) {
return createIntl(
{
defaultLocale: Lang.en,
locale: lang,
messages: (await import(`./dictionaries/${lang}.json`)).default,
},
cache
)
}
export async function getIntl(forceLang?: Lang) {
const h = headers()
let lang = h.get("x-lang") as Lang
if (!lang) {
lang = Lang.en
}
if (forceLang) {
return await initIntl(forceLang)
}
return await initIntl(lang)
}