mirror of
https://github.com/TheRealOwenRees/echecsfrance.git
synced 2026-07-23 12:36:57 +00:00
75a6c74306
* Fix layout issues & co-locate components * Fix front page * Fix centering
61 lines
1.4 KiB
TypeScript
61 lines
1.4 KiB
TypeScript
import { Analytics } from "@vercel/analytics/react";
|
|
import { Inter } from "next/font/google";
|
|
import { useLocale } from "next-intl";
|
|
import { getTranslator } from "next-intl/server";
|
|
import { notFound } from "next/navigation";
|
|
import { ReactNode } from "react";
|
|
|
|
import "@/app/globals.css";
|
|
import TestableLayout from "./components/TestableLayout";
|
|
|
|
const inter = Inter({ subsets: ["latin"] });
|
|
|
|
export async function generateMetadata({
|
|
params: { locale },
|
|
}: {
|
|
params: { locale?: string };
|
|
}) {
|
|
// While the `locale` is required, the namespace is optional and
|
|
// identical to the parameter that `useTranslations` accepts.
|
|
const t = await getTranslator(locale ?? "fr", "Metadata");
|
|
|
|
return {
|
|
title: t("title"),
|
|
description: t("description"),
|
|
keywords: t("keywords"),
|
|
};
|
|
}
|
|
|
|
export default async function RootLayout({
|
|
children,
|
|
params,
|
|
}: {
|
|
children: ReactNode;
|
|
params: { locale?: string };
|
|
}) {
|
|
const locale = useLocale();
|
|
|
|
// Show a 404 error if the user requests an unknown locale
|
|
if (params.locale !== undefined && params.locale !== locale) {
|
|
notFound();
|
|
}
|
|
|
|
let messages;
|
|
try {
|
|
messages = (await import(`@/messages/${locale}.json`)).default;
|
|
} catch (error) {
|
|
notFound();
|
|
}
|
|
|
|
return (
|
|
<html lang={locale}>
|
|
<body className={inter.className}>
|
|
<TestableLayout locale={locale} messages={messages}>
|
|
{children}
|
|
</TestableLayout>
|
|
<Analytics />
|
|
</body>
|
|
</html>
|
|
);
|
|
}
|