diff --git a/src/app/[locale]/admin/courses/[id]/page.tsx b/src/app/[locale]/admin/courses/[id]/page.tsx index ab095f1a..16ce13a0 100644 --- a/src/app/[locale]/admin/courses/[id]/page.tsx +++ b/src/app/[locale]/admin/courses/[id]/page.tsx @@ -1,7 +1,7 @@ import { redirect, notFound } from "next/navigation"; import { auth } from "@/auth"; import { db } from "@/lib/db"; -import { getTranslations } from "next-intl/server"; +import { getTranslations, setRequestLocale } from "next-intl/server"; import Link from "next/link"; import { CourseForm } from "../CourseForm"; import { ModuleManager } from "./ModuleManager"; diff --git a/src/app/[locale]/admin/courses/new/page.tsx b/src/app/[locale]/admin/courses/new/page.tsx index 405c1b4a..5a1e5432 100644 --- a/src/app/[locale]/admin/courses/new/page.tsx +++ b/src/app/[locale]/admin/courses/new/page.tsx @@ -1,7 +1,7 @@ export const dynamic = "force-dynamic"; import { redirect } from "next/navigation"; import { auth } from "@/auth"; -import { getTranslations } from "next-intl/server"; +import { getTranslations, setRequestLocale } from "next-intl/server"; import Link from "next/link"; import { CourseForm } from "../CourseForm"; @@ -11,6 +11,7 @@ export default async function NewCoursePage({ params: Promise<{ locale: string }>; }) { const { locale } = await params; + setRequestLocale(locale); const t = await getTranslations({ locale, namespace: "admin" }); const session = await auth(); diff --git a/src/app/[locale]/admin/courses/page.tsx b/src/app/[locale]/admin/courses/page.tsx index 76b6b25b..72f97a29 100644 --- a/src/app/[locale]/admin/courses/page.tsx +++ b/src/app/[locale]/admin/courses/page.tsx @@ -1,7 +1,7 @@ import { redirect } from "next/navigation"; import { auth } from "@/auth"; import { db } from "@/lib/db"; -import { getTranslations } from "next-intl/server"; +import { getTranslations, setRequestLocale } from "next-intl/server"; import Link from "next/link"; import { AdminCourseActions } from "./AdminCourseActions"; @@ -20,6 +20,7 @@ export default async function AdminCoursesPage({ params: Promise<{ locale: string }>; }) { const { locale } = await params; + setRequestLocale(locale); const t = await getTranslations({ locale, namespace: "admin" }); const session = await auth(); diff --git a/src/app/[locale]/admin/page.tsx b/src/app/[locale]/admin/page.tsx index 4bb05879..8d74330a 100644 --- a/src/app/[locale]/admin/page.tsx +++ b/src/app/[locale]/admin/page.tsx @@ -1,7 +1,7 @@ import { redirect } from "next/navigation"; import { auth } from "@/auth"; import { db } from "@/lib/db"; -import { getTranslations } from "next-intl/server"; +import { getTranslations, setRequestLocale } from "next-intl/server"; import Link from "next/link"; export const dynamic = "force-dynamic"; @@ -12,6 +12,7 @@ export default async function AdminDashboardPage({ params: Promise<{ locale: string }>; }) { const { locale } = await params; + setRequestLocale(locale); const t = await getTranslations({ locale, namespace: "admin" }); const session = await auth(); diff --git a/src/app/[locale]/admin/students/page.tsx b/src/app/[locale]/admin/students/page.tsx index d2b820e1..170cac87 100644 --- a/src/app/[locale]/admin/students/page.tsx +++ b/src/app/[locale]/admin/students/page.tsx @@ -1,7 +1,7 @@ import { redirect } from "next/navigation"; import { auth } from "@/auth"; import { db } from "@/lib/db"; -import { getTranslations } from "next-intl/server"; +import { getTranslations, setRequestLocale } from "next-intl/server"; import Link from "next/link"; export const dynamic = "force-dynamic"; @@ -14,6 +14,7 @@ export default async function AdminStudentsPage({ searchParams: Promise<{ q?: string }>; }) { const { locale } = await params; + setRequestLocale(locale); const { q } = await searchParams; const t = await getTranslations({ locale, namespace: "admin" }); const session = await auth(); diff --git a/src/app/[locale]/auth/verify/page.tsx b/src/app/[locale]/auth/verify/page.tsx index d43e277f..f7f355a7 100644 --- a/src/app/[locale]/auth/verify/page.tsx +++ b/src/app/[locale]/auth/verify/page.tsx @@ -1,5 +1,5 @@ export const dynamic = "force-dynamic"; -import { getTranslations } from "next-intl/server"; +import { getTranslations, setRequestLocale } from "next-intl/server"; import Link from "next/link"; export default async function VerifyPage({ @@ -8,6 +8,7 @@ export default async function VerifyPage({ params: Promise<{ locale: string }>; }) { const { locale } = await params; + setRequestLocale(locale); const t = await getTranslations({ locale, namespace: "auth" }); return ( diff --git a/src/app/[locale]/courses/[slug]/learn/[lessonId]/page.tsx b/src/app/[locale]/courses/[slug]/learn/[lessonId]/page.tsx index ce0445ca..d8741cf1 100644 --- a/src/app/[locale]/courses/[slug]/learn/[lessonId]/page.tsx +++ b/src/app/[locale]/courses/[slug]/learn/[lessonId]/page.tsx @@ -1,7 +1,7 @@ import { redirect, notFound } from "next/navigation"; import { auth } from "@/auth"; import { db } from "@/lib/db"; -import { getTranslations } from "next-intl/server"; +import { getTranslations, setRequestLocale } from "next-intl/server"; import Link from "next/link"; import { LessonContent } from "./LessonContent"; diff --git a/src/app/[locale]/courses/[slug]/page.tsx b/src/app/[locale]/courses/[slug]/page.tsx index acbe0518..632c6694 100644 --- a/src/app/[locale]/courses/[slug]/page.tsx +++ b/src/app/[locale]/courses/[slug]/page.tsx @@ -1,4 +1,4 @@ -import { getTranslations } from "next-intl/server"; +import { getTranslations, setRequestLocale } from "next-intl/server"; import { notFound } from "next/navigation"; import Link from "next/link"; import { db } from "@/lib/db"; diff --git a/src/app/[locale]/courses/page.tsx b/src/app/[locale]/courses/page.tsx index 24abe38c..e17273c2 100644 --- a/src/app/[locale]/courses/page.tsx +++ b/src/app/[locale]/courses/page.tsx @@ -1,4 +1,4 @@ -import { getTranslations } from "next-intl/server"; +import { getTranslations, setRequestLocale } from "next-intl/server"; import { db } from "@/lib/db"; import { auth } from "@/auth"; import { CourseCard } from "@/components/CourseCard"; @@ -17,6 +17,7 @@ export default async function CoursesPage({ searchParams: Promise<{ category?: string; level?: string; q?: string }>; }) { const { locale } = await params; + setRequestLocale(locale); const { category, level, q } = await searchParams; const t = await getTranslations({ locale, namespace: "home" }); const courseT = await getTranslations({ locale, namespace: "course" }); diff --git a/src/app/[locale]/dashboard/page.tsx b/src/app/[locale]/dashboard/page.tsx index 6c8aec2b..5d3fc669 100644 --- a/src/app/[locale]/dashboard/page.tsx +++ b/src/app/[locale]/dashboard/page.tsx @@ -1,7 +1,7 @@ import { redirect } from "next/navigation"; import { auth } from "@/auth"; import { db } from "@/lib/db"; -import { getTranslations } from "next-intl/server"; +import { getTranslations, setRequestLocale } from "next-intl/server"; import Link from "next/link"; import { ProgressBar } from "@/components/ProgressBar"; @@ -19,6 +19,7 @@ export default async function DashboardPage({ params: Promise<{ locale: string }>; }) { const { locale } = await params; + setRequestLocale(locale); const t = await getTranslations({ locale, namespace: "dashboard" }); const courseT = await getTranslations({ locale, namespace: "course" }); const session = await auth(); diff --git a/src/app/[locale]/layout.tsx b/src/app/[locale]/layout.tsx index 56bb8e62..28d41eed 100644 --- a/src/app/[locale]/layout.tsx +++ b/src/app/[locale]/layout.tsx @@ -1,5 +1,5 @@ import { NextIntlClientProvider } from "next-intl"; -import { getMessages } from "next-intl/server"; +import { getMessages, setRequestLocale } from "next-intl/server"; import { notFound } from "next/navigation"; import { auth } from "@/auth"; import { Nav } from "@/components/Nav"; @@ -24,6 +24,8 @@ export default async function LocaleLayout({ notFound(); } + setRequestLocale(locale); + const messages = await getMessages(); const session = await auth(); const userRole = (session?.user as any)?.role; diff --git a/src/app/[locale]/page.tsx b/src/app/[locale]/page.tsx index e2759d19..b6b98a27 100644 --- a/src/app/[locale]/page.tsx +++ b/src/app/[locale]/page.tsx @@ -1,5 +1,5 @@ export const dynamic = "force-dynamic"; -import { getTranslations } from "next-intl/server"; +import { getTranslations, setRequestLocale } from "next-intl/server"; import Link from "next/link"; import { db } from "@/lib/db"; import { CourseCard } from "@/components/CourseCard"; @@ -11,6 +11,7 @@ export default async function HomePage({ params: Promise<{ locale: string }>; }) { const { locale } = await params; + setRequestLocale(locale); const t = await getTranslations({ locale, namespace: "home" }); const nav = await getTranslations({ locale, namespace: "nav" }); const courseT = await getTranslations({ locale, namespace: "course" }); diff --git a/src/i18n/request.ts b/src/i18n/request.ts index c4b7ca26..0899239d 100644 --- a/src/i18n/request.ts +++ b/src/i18n/request.ts @@ -1,5 +1,9 @@ import { getRequestConfig } from "next-intl/server"; -export default getRequestConfig(async ({ locale }) => ({ - messages: (await import(`../../messages/${locale}.json`)).default, -})); +export default getRequestConfig(async ({ requestLocale }) => { + const locale = (await requestLocale) ?? "fr"; + return { + locale, + messages: (await import(`../../messages/${locale}.json`)).default, + }; +});