diff --git a/app/[lang]/(live)/(protected)/layout.tsx b/app/[lang]/(live)/(protected)/layout.tsx index 75d409ee5..024071af3 100644 --- a/app/[lang]/(live)/(protected)/layout.tsx +++ b/app/[lang]/(live)/(protected)/layout.tsx @@ -5,13 +5,11 @@ import { overview } from "@/constants/routes/myPages" import { serverClient } from "@/lib/trpc/server" import { auth } from "@/auth" - -import type { LangParams, LayoutArgs } from "@/types/params" +import { getLang } from "@/i18n/serverContext" export default async function ProtectedLayout({ children, - params, -}: React.PropsWithChildren>) { +}: React.PropsWithChildren) { const session = await auth() /** * Fallback to make sure every route nested in the @@ -19,16 +17,16 @@ export default async function ProtectedLayout({ */ const h = headers() const redirectTo = encodeURIComponent( - h.get("x-url") ?? h.get("x-pathname") ?? overview[params.lang] + h.get("x-url") ?? h.get("x-pathname") ?? overview[getLang()] ) if (!session) { - redirect(`/${params.lang}/login?redirectTo=${redirectTo}`) + redirect(`/${getLang()}/login?redirectTo=${redirectTo}`) } const user = await serverClient().user.get() if (!user || "error" in user) { - redirect(`/${params.lang}/login?redirectTo=${redirectTo}`) + redirect(`/${getLang()}/login?redirectTo=${redirectTo}`) } return children diff --git a/app/[lang]/(live)/(protected)/my-pages/@breadcrumbs/[...path]/page.tsx b/app/[lang]/(live)/(protected)/my-pages/@breadcrumbs/[...path]/page.tsx index 666fa6367..41dea7b4a 100644 --- a/app/[lang]/(live)/(protected)/my-pages/@breadcrumbs/[...path]/page.tsx +++ b/app/[lang]/(live)/(protected)/my-pages/@breadcrumbs/[...path]/page.tsx @@ -1,5 +1,10 @@ import Breadcrumbs from "@/components/MyPages/Breadcrumbs" +import { setLang } from "@/i18n/serverContext" + +import { LangParams, PageArgs } from "@/types/params" + +export default function AllBreadcrumbs({ params }: PageArgs) { + setLang(params.lang) -export default function AllBreadcrumbs() { return } diff --git a/app/[lang]/(live)/(protected)/my-pages/[...path]/page.tsx b/app/[lang]/(live)/(protected)/my-pages/[...path]/page.tsx index 7d4eecf73..b35861357 100644 --- a/app/[lang]/(live)/(protected)/my-pages/[...path]/page.tsx +++ b/app/[lang]/(live)/(protected)/my-pages/[...path]/page.tsx @@ -4,6 +4,7 @@ import Content from "@/components/MyPages/AccountPage/Content" import Title from "@/components/TempDesignSystem/Text/Title" import TrackingSDK from "@/components/TrackingSDK" import { getIntl } from "@/i18n" +import { setLang } from "@/i18n/serverContext" import styles from "./page.module.css" @@ -12,6 +13,8 @@ import type { LangParams, PageArgs } from "@/types/params" export default async function MyPages({ params, }: PageArgs) { + setLang(params.lang) + const accountPageRes = await serverClient().contentstack.accountPage.get() const { formatMessage } = await getIntl() @@ -26,7 +29,7 @@ export default async function MyPages({
{accountPage.heading} {accountPage.content.length ? ( - + ) : (

{formatMessage({ id: "No content published" })}

)} diff --git a/app/[lang]/(live)/(protected)/my-pages/layout.tsx b/app/[lang]/(live)/(protected)/my-pages/layout.tsx index d19162910..e6152ae51 100644 --- a/app/[lang]/(live)/(protected)/my-pages/layout.tsx +++ b/app/[lang]/(live)/(protected)/my-pages/layout.tsx @@ -2,20 +2,17 @@ import Sidebar from "@/components/MyPages/Sidebar" import styles from "./layout.module.css" -import { LangParams, LayoutArgs } from "@/types/params" - export default async function MyPagesLayout({ breadcrumbs, children, - params, -}: React.PropsWithChildren> & { +}: React.PropsWithChildren & { breadcrumbs: React.ReactNode }) { return (
{breadcrumbs}
- + {children}
diff --git a/app/[lang]/(live)/(protected)/my-pages/profile/@communication/page.tsx b/app/[lang]/(live)/(protected)/my-pages/profile/@communication/page.tsx index 300590bed..fb15f24cc 100644 --- a/app/[lang]/(live)/(protected)/my-pages/profile/@communication/page.tsx +++ b/app/[lang]/(live)/(protected)/my-pages/profile/@communication/page.tsx @@ -3,10 +3,17 @@ import Link from "@/components/TempDesignSystem/Link" import Body from "@/components/TempDesignSystem/Text/Body" import Subtitle from "@/components/TempDesignSystem/Text/Subtitle" import { getIntl } from "@/i18n" +import { setLang } from "@/i18n/serverContext" import styles from "./page.module.css" -export default async function CommunicationSlot() { +import { LangParams, PageArgs } from "@/types/params" + +export default async function CommunicationSlot({ + params, +}: PageArgs) { + setLang(params.lang) + const { formatMessage } = await getIntl() return (
diff --git a/app/[lang]/(live)/(protected)/my-pages/profile/@creditCards/page.tsx b/app/[lang]/(live)/(protected)/my-pages/profile/@creditCards/page.tsx index c30661d9e..6fe1f7e01 100644 --- a/app/[lang]/(live)/(protected)/my-pages/profile/@creditCards/page.tsx +++ b/app/[lang]/(live)/(protected)/my-pages/profile/@creditCards/page.tsx @@ -7,10 +7,14 @@ import Body from "@/components/TempDesignSystem/Text/Body" import Caption from "@/components/TempDesignSystem/Text/Caption" import Subtitle from "@/components/TempDesignSystem/Text/Subtitle" import { getIntl } from "@/i18n" +import { setLang } from "@/i18n/serverContext" import styles from "./page.module.css" -export default async function CreditCardSlot() { +import { LangParams, PageArgs } from "@/types/params" + +export default async function CreditCardSlot({ params }: PageArgs) { + setLang(params.lang) const { formatMessage } = await getIntl() const creditCards = await serverClient().user.creditCards() diff --git a/app/[lang]/(live)/(protected)/my-pages/profile/@membershipCards/page.tsx b/app/[lang]/(live)/(protected)/my-pages/profile/@membershipCards/page.tsx index 6da3bb6df..226a33860 100644 --- a/app/[lang]/(live)/(protected)/my-pages/profile/@membershipCards/page.tsx +++ b/app/[lang]/(live)/(protected)/my-pages/profile/@membershipCards/page.tsx @@ -5,10 +5,16 @@ import Link from "@/components/TempDesignSystem/Link" import Body from "@/components/TempDesignSystem/Text/Body" import Subtitle from "@/components/TempDesignSystem/Text/Subtitle" import { getIntl } from "@/i18n" +import { setLang } from "@/i18n/serverContext" import styles from "./page.module.css" -export default async function MembershipCardSlot() { +import { LangParams, PageArgs } from "@/types/params" + +export default async function MembershipCardSlot({ + params, +}: PageArgs) { + setLang(params.lang) const { formatMessage } = await getIntl() const membershipCards = await serverClient().user.membershipCards() diff --git a/app/[lang]/(live)/(protected)/my-pages/profile/@profile/edit/page.tsx b/app/[lang]/(live)/(protected)/my-pages/profile/@profile/edit/page.tsx index fa83ee3b1..a86926356 100644 --- a/app/[lang]/(live)/(protected)/my-pages/profile/@profile/edit/page.tsx +++ b/app/[lang]/(live)/(protected)/my-pages/profile/@profile/edit/page.tsx @@ -1,8 +1,15 @@ import { serverClient } from "@/lib/trpc/server" import Form from "@/components/Forms/Edit/Profile" +import { setLang } from "@/i18n/serverContext" + +import { LangParams, PageArgs } from "@/types/params" + +export default async function EditProfileSlot({ + params, +}: PageArgs) { + setLang(params.lang) -export default async function EditProfileSlot() { const user = await serverClient().user.get({ mask: false }) if (!user || "error" in user) { return null diff --git a/app/[lang]/(live)/(protected)/my-pages/profile/@profile/page.tsx b/app/[lang]/(live)/(protected)/my-pages/profile/@profile/page.tsx index 455dc3159..4c1532cf1 100644 --- a/app/[lang]/(live)/(protected)/my-pages/profile/@profile/page.tsx +++ b/app/[lang]/(live)/(protected)/my-pages/profile/@profile/page.tsx @@ -16,12 +16,14 @@ import Link from "@/components/TempDesignSystem/Link" import Body from "@/components/TempDesignSystem/Text/Body" import Title from "@/components/TempDesignSystem/Text/Title" import { getIntl } from "@/i18n" +import { getLang, setLang } from "@/i18n/serverContext" import styles from "./page.module.css" -import type { LangParams, PageArgs } from "@/types/params" +import { LangParams, PageArgs } from "@/types/params" export default async function Profile({ params }: PageArgs) { + setLang(params.lang) const { formatMessage } = await getIntl() const user = await serverClient().user.get() if (!user || "error" in user) { @@ -40,7 +42,7 @@ export default async function Profile({ params }: PageArgs) { diff --git a/app/[lang]/(live)/(protected)/my-pages/profile/page.tsx b/app/[lang]/(live)/(protected)/my-pages/profile/page.tsx index 7755289e5..3f17f8f96 100644 --- a/app/[lang]/(live)/(protected)/my-pages/profile/page.tsx +++ b/app/[lang]/(live)/(protected)/my-pages/profile/page.tsx @@ -3,8 +3,12 @@ import "./profileLayout.css" import { serverClient } from "@/lib/trpc/server" import TrackingSDK from "@/components/TrackingSDK" +import { setLang } from "@/i18n/serverContext" -export default async function ProfilePage() { +import { LangParams, PageArgs } from "@/types/params" + +export default async function ProfilePage({ params }: PageArgs) { + setLang(params.lang) const accountPage = await serverClient().contentstack.accountPage.get() if (!accountPage) { diff --git a/app/[lang]/(live)/(public)/[contentType]/[uid]/@breadcrumbs/page.tsx b/app/[lang]/(live)/(public)/[contentType]/[uid]/@breadcrumbs/page.tsx index b1237b8cb..49117ee95 100644 --- a/app/[lang]/(live)/(public)/[contentType]/[uid]/@breadcrumbs/page.tsx +++ b/app/[lang]/(live)/(public)/[contentType]/[uid]/@breadcrumbs/page.tsx @@ -1,5 +1,10 @@ import Breadcrumbs from "@/components/MyPages/Breadcrumbs" +import { setLang } from "@/i18n/serverContext" + +import { LangParams, PageArgs } from "@/types/params" + +export default function PageBreadcrumbs({ params }: PageArgs) { + setLang(params.lang) -export default function PageBreadcrumbs() { return } diff --git a/app/[lang]/(live)/(public)/[contentType]/[uid]/page.tsx b/app/[lang]/(live)/(public)/[contentType]/[uid]/page.tsx index 1486bb933..0e8e98a05 100644 --- a/app/[lang]/(live)/(public)/[contentType]/[uid]/page.tsx +++ b/app/[lang]/(live)/(public)/[contentType]/[uid]/page.tsx @@ -3,6 +3,7 @@ import { notFound } from "next/navigation" import ContentPage from "@/components/ContentType/ContentPage" import HotelPage from "@/components/ContentType/HotelPage/HotelPage" import LoyaltyPage from "@/components/ContentType/LoyaltyPage/LoyaltyPage" +import { setLang } from "@/i18n/serverContext" import { ContentTypeParams, @@ -14,13 +15,15 @@ import { export default async function ContentTypePage({ params, }: PageArgs) { + setLang(params.lang) + switch (params.contentType) { case "content-page": return case "loyalty-page": - return + return case "hotel-page": - return + return default: const type: never = params.contentType console.error(`Unsupported content type given: ${type}`) diff --git a/app/[lang]/(live)/(public)/hotelreservation/page.tsx b/app/[lang]/(live)/(public)/hotelreservation/page.tsx index f2f81fc97..425d8aef2 100644 --- a/app/[lang]/(live)/(public)/hotelreservation/page.tsx +++ b/app/[lang]/(live)/(public)/hotelreservation/page.tsx @@ -1,5 +1,9 @@ +import { setLang } from "@/i18n/serverContext" + import { LangParams, PageArgs } from "@/types/params" export default function HotelReservationPage({ params }: PageArgs) { + setLang(params.lang) + return null } diff --git a/app/[lang]/(live)/(public)/hotelreservation/select-hotel/page.tsx b/app/[lang]/(live)/(public)/hotelreservation/select-hotel/page.tsx index 248d37f47..c28f415bb 100644 --- a/app/[lang]/(live)/(public)/hotelreservation/select-hotel/page.tsx +++ b/app/[lang]/(live)/(public)/hotelreservation/select-hotel/page.tsx @@ -6,6 +6,7 @@ import { ChevronRightIcon } from "@/components/Icons" import StaticMap from "@/components/Maps/StaticMap" import Link from "@/components/TempDesignSystem/Link" import { getIntl } from "@/i18n" +import { getLang, setLang } from "@/i18n/serverContext" import styles from "./page.module.css" @@ -15,10 +16,11 @@ export default async function SelectHotelPage({ params, }: PageArgs) { const intl = await getIntl() + setLang(params.lang) const { attributes } = await serverClient().hotel.getHotel({ hotelId: "d98c7ab1-ebaa-4102-b351-758daf1ddf55", - language: params.lang, + language: getLang(), }) const hotels = [attributes] diff --git a/app/[lang]/(live)/(public)/hotelreservation/select-rate/page.tsx b/app/[lang]/(live)/(public)/hotelreservation/select-rate/page.tsx index 48e3e55c0..162d7dc8c 100644 --- a/app/[lang]/(live)/(public)/hotelreservation/select-rate/page.tsx +++ b/app/[lang]/(live)/(public)/hotelreservation/select-rate/page.tsx @@ -5,16 +5,19 @@ import BedSelection from "@/components/HotelReservation/SelectRate/BedSelection" import BreakfastSelection from "@/components/HotelReservation/SelectRate/BreakfastSelection" import FlexibilitySelection from "@/components/HotelReservation/SelectRate/FlexibilitySelection" import RoomSelection from "@/components/HotelReservation/SelectRate/RoomSelection" +import { getLang, setLang } from "@/i18n/serverContext" import styles from "./page.module.css" import { LangParams, PageArgs } from "@/types/params" export default async function SelectRate({ params }: PageArgs) { + setLang(params.lang) + // TODO: pass the correct hotel ID const { attributes: hotel } = await serverClient().hotel.getHotel({ hotelId: "d98c7ab1-ebaa-4102-b351-758daf1ddf55", - language: params.lang, + language: getLang(), }) const rooms = await serverClient().hotel.getRates({ // TODO: pass the correct hotel ID and all other parameters that should be included in the search diff --git a/app/[lang]/(live)/@header/[...paths]/@languageSwitcher/error.tsx b/app/[lang]/(live)/@header/[...paths]/@languageSwitcher/error.tsx index be9c458c9..1501c40ab 100644 --- a/app/[lang]/(live)/@header/[...paths]/@languageSwitcher/error.tsx +++ b/app/[lang]/(live)/@header/[...paths]/@languageSwitcher/error.tsx @@ -1,14 +1,9 @@ "use client" -import { useParams } from "next/navigation" - import { baseUrls } from "@/constants/routes/baseUrls" import LanguageSwitcher from "@/components/Current/Header/LanguageSwitcher" -import { LangParams } from "@/types/params" - export default function Error() { - const params = useParams() - return + return } diff --git a/app/[lang]/(live)/@header/[...paths]/@languageSwitcher/page.tsx b/app/[lang]/(live)/@header/[...paths]/@languageSwitcher/page.tsx index 960fb22ba..6758eaa7c 100644 --- a/app/[lang]/(live)/@header/[...paths]/@languageSwitcher/page.tsx +++ b/app/[lang]/(live)/@header/[...paths]/@languageSwitcher/page.tsx @@ -1,11 +1,18 @@ import { serverClient } from "@/lib/trpc/server" import LanguageSwitcher from "@/components/Current/Header/LanguageSwitcher" +import { setLang } from "@/i18n/serverContext" + +import { LangParams, PageArgs } from "@/types/params" + +export default async function LanguageSwitcherRoute({ + params, +}: PageArgs) { + setLang(params.lang) -export default async function LanguageSwitcherRoute() { const data = await serverClient().contentstack.languageSwitcher.get() if (!data) { return null } - return + return } diff --git a/app/[lang]/(live)/@header/[...paths]/@myPagesMobileDropdown/page.tsx b/app/[lang]/(live)/@header/[...paths]/@myPagesMobileDropdown/page.tsx index ae2167e9b..8384a267c 100644 --- a/app/[lang]/(live)/@header/[...paths]/@myPagesMobileDropdown/page.tsx +++ b/app/[lang]/(live)/@header/[...paths]/@myPagesMobileDropdown/page.tsx @@ -1,13 +1,15 @@ import { serverClient } from "@/lib/trpc/server" import MyPagesMobileDropdown from "@/components/Current/Header/MyPagesMobileDropdown" +import { setLang } from "@/i18n/serverContext" import { LangParams, PageArgs } from "@/types/params" export default async function MyPagesMobileDropdownPage({ params, }: PageArgs) { + setLang(params.lang) const navigation = await serverClient().contentstack.myPages.navigation.get() if (!navigation) return null - return + return } diff --git a/app/[lang]/(live)/@header/[...paths]/layout.tsx b/app/[lang]/(live)/@header/[...paths]/layout.tsx index 73a42092b..d23bf78bf 100644 --- a/app/[lang]/(live)/@header/[...paths]/layout.tsx +++ b/app/[lang]/(live)/@header/[...paths]/layout.tsx @@ -1,17 +1,13 @@ import Header from "@/components/Current/Header" -import { LangParams, PageArgs } from "@/types/params" - export default function HeaderLayout({ - params, languageSwitcher, myPagesMobileDropdown, -}: PageArgs & { +}: { languageSwitcher: React.ReactNode } & { myPagesMobileDropdown: React.ReactNode }) { return (
diff --git a/app/[lang]/(live)/@header/page.tsx b/app/[lang]/(live)/@header/page.tsx index 9e5e41636..09220fbb6 100644 --- a/app/[lang]/(live)/@header/page.tsx +++ b/app/[lang]/(live)/@header/page.tsx @@ -4,18 +4,18 @@ import { serverClient } from "@/lib/trpc/server" import Header from "@/components/Current/Header" import LanguageSwitcher from "@/components/Current/Header/LanguageSwitcher" import MyPagesMobileDropdown from "@/components/Current/Header/MyPagesMobileDropdown" +import { setLang } from "@/i18n/serverContext" import { LangParams, PageArgs } from "@/types/params" export default async function HeaderPage({ params }: PageArgs) { + setLang(params.lang) + const navigation = await serverClient().contentstack.myPages.navigation.get() return (
- } - languageSwitcher={} + myPagesMobileDropdown={} + languageSwitcher={} /> ) } diff --git a/app/[lang]/(live)/layout.tsx b/app/[lang]/(live)/layout.tsx index 620034307..2da54eb0a 100644 --- a/app/[lang]/(live)/layout.tsx +++ b/app/[lang]/(live)/layout.tsx @@ -11,6 +11,7 @@ import VwoScript from "@/components/Current/VwoScript" import { preloadUserTracking } from "@/components/TrackingSDK" import { getIntl } from "@/i18n" import ServerIntlProvider from "@/i18n/Provider" +import { getLang, setLang } from "@/i18n/serverContext" import type { Metadata } from "next" @@ -30,11 +31,12 @@ export default async function RootLayout({ header: React.ReactNode } >) { + setLang(params.lang) preloadUserTracking() const { defaultLocale, locale, messages } = await getIntl() return ( - +