From df29376b0e305de59b799aab20833dfa2b6ff942 Mon Sep 17 00:00:00 2001 From: Alex van Andel Date: Wed, 11 Oct 2023 18:36:32 +0100 Subject: [PATCH] fix: Revert deletion of getLocaleFromRequest in #11534 (#11835) --- packages/lib/getLocaleFromRequest.ts | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 packages/lib/getLocaleFromRequest.ts diff --git a/packages/lib/getLocaleFromRequest.ts b/packages/lib/getLocaleFromRequest.ts new file mode 100644 index 0000000000..246c4482f0 --- /dev/null +++ b/packages/lib/getLocaleFromRequest.ts @@ -0,0 +1,22 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ +import parser from "accept-language-parser"; +import type { GetServerSidePropsContext, NextApiRequest } from "next"; + +import { getServerSession } from "@calcom/features/auth/lib/getServerSession"; +import type { Maybe } from "@calcom/trpc/server"; + +const { i18n } = require("@calcom/config/next-i18next.config"); + +export async function getLocaleFromRequest( + req: NextApiRequest | GetServerSidePropsContext["req"] +): Promise { + const session = await getServerSession({ req }); + if (session?.user?.locale) return session.user.locale; + let preferredLocale: string | null | undefined; + if (req.headers["accept-language"]) { + preferredLocale = parser.pick(i18n.locales, req.headers["accept-language"], { + loose: true, + }) as Maybe; + } + return preferredLocale ?? i18n.defaultLocale; +}