diff --git a/apps/web/server/lib/ssr.ts b/apps/web/server/lib/ssr.ts index aab12984e0..4158095666 100644 --- a/apps/web/server/lib/ssr.ts +++ b/apps/web/server/lib/ssr.ts @@ -3,7 +3,7 @@ import { serverSideTranslations } from "next-i18next/serverSideTranslations"; import superjson from "superjson"; import { CALCOM_VERSION } from "@calcom/lib/constants"; -import { getLocaleFromRequest } from "@calcom/lib/i18n"; +import { getLocaleFromRequest } from "@calcom/lib/getLocaleFromRequest"; import { createProxySSGHelpers } from "@calcom/trpc/react/ssg"; import { createContext } from "@calcom/trpc/server/createContext"; import { appRouter } from "@calcom/trpc/server/routers/_app"; 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; +} diff --git a/packages/lib/i18n.ts b/packages/lib/i18n.ts index 5d67b291e6..ed2a33d07f 100644 --- a/packages/lib/i18n.ts +++ b/packages/lib/i18n.ts @@ -1,26 +1,6 @@ /* 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; -} - // Workaround for using router.locales from old router export const locales = i18n.locales as string[]; diff --git a/packages/trpc/server/createContext.ts b/packages/trpc/server/createContext.ts index 1a58b8e911..e82742a37b 100644 --- a/packages/trpc/server/createContext.ts +++ b/packages/trpc/server/createContext.ts @@ -3,7 +3,7 @@ import type { GetServerSidePropsContext, NextApiRequest, NextApiResponse } from import type { Session } from "next-auth"; import type { serverSideTranslations } from "next-i18next/serverSideTranslations"; -import { getLocaleFromRequest } from "@calcom/lib/i18n"; +import { getLocaleFromRequest } from "@calcom/lib/getLocaleFromRequest"; import prisma from "@calcom/prisma"; import type { SelectedCalendar, User as PrismaUser } from "@calcom/prisma/client";