diff --git a/apps/partner-sas/components/IntlProvider.tsx b/apps/partner-sas/components/IntlProvider.tsx index 0189a11ed..f4e6d2d76 100644 --- a/apps/partner-sas/components/IntlProvider.tsx +++ b/apps/partner-sas/components/IntlProvider.tsx @@ -2,8 +2,10 @@ import { type IntlConfig, IntlProvider } from "react-intl" -type ClientIntlProviderProps = React.PropsWithChildren< - Pick +import type { Lang } from "@scandic-hotels/common/constants/language" + +export type ClientIntlProviderProps = React.PropsWithChildren< + Pick & { locale: Lang } > export default function ClientIntlProvider({ diff --git a/apps/partner-sas/i18n/Provider.tsx b/apps/partner-sas/i18n/Provider.tsx index 088c95395..16b1ccb83 100644 --- a/apps/partner-sas/i18n/Provider.tsx +++ b/apps/partner-sas/i18n/Provider.tsx @@ -1,12 +1,11 @@ "use client" -import { type IntlConfig, IntlProvider } from "react-intl" +import { IntlProvider } from "react-intl" +import { Lang } from "@scandic-hotels/common/constants/language" import { logger } from "@scandic-hotels/common/logger" -type ClientIntlProviderProps = React.PropsWithChildren< - Pick -> +import type { ClientIntlProviderProps } from "@/components/IntlProvider" const logged: Record = {} @@ -16,6 +15,10 @@ export default function ClientIntlProvider({ defaultLocale, messages, }: ClientIntlProviderProps) { + if (!Lang[locale]) { + locale = Lang.en + } + return ( > = {} export async function getMessages(lang: Lang): Promise> { + if (!Lang[lang]) { + lang = Lang.en + } + return (await import(`./dictionaries/${lang}.json`)).default } diff --git a/apps/scandic-web/i18n/Provider.tsx b/apps/scandic-web/i18n/Provider.tsx index 136dec6c0..221ca0a46 100644 --- a/apps/scandic-web/i18n/Provider.tsx +++ b/apps/scandic-web/i18n/Provider.tsx @@ -1,19 +1,26 @@ "use client" -import { IntlProvider } from "react-intl" +import { type IntlConfig, IntlProvider } from "react-intl" +import { Lang } from "@scandic-hotels/common/constants/language" import { logger } from "@scandic-hotels/common/logger" -import type { ClientIntlProviderProps } from "@/types/i18n" - const logged: Record = {} +export type ClientIntlProviderProps = React.PropsWithChildren< + Pick & { locale: Lang } +> + export default function ClientIntlProvider({ children, locale, defaultLocale, messages, }: ClientIntlProviderProps) { + if (!Lang[locale]) { + locale = Lang.en + } + return ( > = {} export async function getMessages(lang: Lang): Promise> { + if (!Lang[lang]) { + lang = Lang.en + } + return (await import(`./dictionaries/${lang}.json`)).default } diff --git a/apps/scandic-web/types/i18n.ts b/apps/scandic-web/types/i18n.ts deleted file mode 100644 index 70068122b..000000000 --- a/apps/scandic-web/types/i18n.ts +++ /dev/null @@ -1,5 +0,0 @@ -import type { IntlConfig } from "react-intl" - -export type ClientIntlProviderProps = React.PropsWithChildren< - Pick -> diff --git a/packages/trpc/lib/procedures.ts b/packages/trpc/lib/procedures.ts index 9ed758ead..70515a795 100644 --- a/packages/trpc/lib/procedures.ts +++ b/packages/trpc/lib/procedures.ts @@ -1,5 +1,6 @@ import * as Sentry from "@sentry/nextjs" +import { Lang } from "@scandic-hotels/common/constants/language" import { logger } from "@scandic-hotels/common/logger" import { getServiceToken } from "@scandic-hotels/common/tokenManager" @@ -30,13 +31,14 @@ export const languageProcedure = baseProcedure.use(async function (opts) { const input = await opts.getRawInput() const parsedInput = langInput.safeParse(input) - if (!parsedInput.success) { + + if (process.env.NODE_ENV === "development" && !parsedInput.success) { throw badRequestError("Missing Lang in tRPC context") } return opts.next({ ctx: { - lang: parsedInput.data.lang, + lang: parsedInput.success ? parsedInput.data.lang : Lang.en, }, }) }