import "server-only" import { headers } from "next/headers" import { cache } from "react" import { Lang } from "@scandic-hotels/common/constants/language" import { languageSchema } from "@scandic-hotels/common/utils/languages" const getRef = cache(() => ({ current: undefined as Lang | undefined })) /** * Set the language for the current request * * It works kind of like React's context, * but on the server side, per request. * * @param newLang */ export function setLang(newLang: Lang) { const parseResult = languageSchema.safeParse(newLang) getRef().current = parseResult.success ? parseResult.data : Lang.en } /** * Get the global language set for the current request */ export async function getLang(): Promise { const contextLang = getRef().current const headersList = await headers() const headerLang = headersList.get("x-lang") as Lang const l = contextLang || headerLang || Lang.en return l }