import '../globals.css' import type { Metadata } from 'next' import { NextIntlClientProvider } from 'next-intl' import { getMessages, getTranslations } from 'next-intl/server' import { notFound } from 'next/navigation' import { MuiThemeProvider } from '@/components/providers/theme-provider' import { AuthProvider } from '@/components/auth/auth-provider' import { Navigation } from '@/components/layout/navigation' import FloatingChat from '@/components/chat/floating-chat' import { merriweather, lato } from '@/lib/fonts' export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }): Promise { const { locale } = await params const t = await getTranslations({ locale, namespace: 'seo' }) const currentUrl = locale === 'ro' ? 'https://ghidulbiblic.ro/ro/' : 'https://ghidulbiblic.ro/en/' const alternateUrl = locale === 'ro' ? 'https://ghidulbiblic.ro/en/' : 'https://ghidulbiblic.ro/ro/' return { title: t('title'), description: t('description'), keywords: t('keywords'), alternates: { canonical: currentUrl, languages: { 'ro': 'https://ghidulbiblic.ro/ro/', 'en': 'https://ghidulbiblic.ro/en/', 'x-default': 'https://ghidulbiblic.ro/' } }, openGraph: { title: t('ogTitle'), description: t('ogDescription'), url: currentUrl, siteName: locale === 'ro' ? 'Ghid Biblic' : 'Biblical Guide', locale: locale, type: 'website', images: [ { url: `https://ghidulbiblic.ro/og-image-${locale}.jpg`, width: 1200, height: 630, alt: t('ogTitle'), }, ], }, twitter: { card: 'summary_large_image', site: '@ghidbiblic', title: t('twitterTitle'), description: t('twitterDescription'), images: [`https://ghidulbiblic.ro/og-image-${locale}.jpg`], }, other: { 'application/ld+json': JSON.stringify({ "@context": "https://schema.org", "@type": "MobileApplication", "name": locale === 'ro' ? "Ghid Biblic" : "Biblical Guide", "url": "https://ghidulbiblic.ro", "description": t('description'), "applicationCategory": "EducationApplication", "operatingSystem": "iOS, Android, Web", "inLanguage": [locale], "offers": { "@type": "Offer", "price": "0", "priceCurrency": "USD" } }) } } } export async function generateStaticParams() { return [ { locale: 'ro' }, { locale: 'en' } ] } interface LocaleLayoutProps { children: React.ReactNode params: Promise<{ locale: string }> } const locales = ['ro', 'en'] export default async function LocaleLayout({ children, params }: LocaleLayoutProps) { const { locale } = await params // Validate locale if (!locales.includes(locale)) { notFound() } const messages = await getMessages({ locale }) return ( {children} ) }