AllAi/apps/web/app/[locale]/layout.tsx
2025-11-14 21:54:04 +03:00

47 lines
1.2 KiB
TypeScript

import { getMetadataForLocale, resolveLocale, rtlLocales } from "@/config/i18n";
import type { Metadata } from "next";
import { ReactNode } from "react";
import { buildCanonical, buildLocaleAlternates, buildOpenGraph, buildTwitterCard } from "@/seo/seoUtils";
export async function generateMetadata({ params }: { params: { locale: string } }): Promise<Metadata> {
const locale = resolveLocale(params.locale);
const meta = getMetadataForLocale(locale);
const path = "/";
return {
title: meta.title,
description: meta.description,
alternates: {
canonical: buildCanonical(locale, path),
languages: buildLocaleAlternates(path)
},
openGraph: buildOpenGraph({
locale,
title: meta.title,
description: meta.description,
path
}),
twitter: buildTwitterCard({
title: meta.title,
description: meta.description
})
};
}
export default function LocaleLayout({
children,
params
}: {
children: ReactNode;
params: { locale: string };
}) {
const locale = resolveLocale(params.locale);
const dir = rtlLocales.includes(locale) ? "rtl" : "ltr";
return (
<div lang={locale} dir={dir} style={{ display: "contents" }}>
{children}
</div>
);
}