import "server-only"; import { cache } from "react"; import { cookies, headers } from "next/headers"; import { detectLocale, languageCookie, localeTag, resolveLocale, translator, type LanguagePreference, } from "@/shared/i18n"; export const getI18n = cache(async () => { const [jar, requestHeaders] = await Promise.all([cookies(), headers()]); const preference = jar.get(languageCookie)?.value; const locale = resolveLocale( preference, requestHeaders.get("accept-language"), ); const languagePreference: LanguagePreference = preference === "en" || preference === "ru" ? preference : "auto"; return { locale, preference: languagePreference, detectedLocale: detectLocale(requestHeaders.get("accept-language")), t: translator(locale), formatNumber: (value: number) => value.toLocaleString(localeTag(locale)), formatDate: (value: string) => new Date(value).toLocaleDateString(localeTag(locale)), }; });