Files
echecsfrance/app/[lang]/layout.tsx
T
Timothy Armes 75a6c74306 Fix layout issues & co-locate components (#46)
* Fix layout issues & co-locate components

* Fix front page

* Fix centering
2023-07-04 13:26:25 +02:00

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>
);
}