import type { Metadata } from 'next' import { NextIntlClientProvider } from 'next-intl' import { getMessages, getTranslations } from 'next-intl/server' import { notFound } from 'next/navigation' import Link from 'next/link' import { locales } from '@/i18n' import Providers from './Providers' import Navbar from '@/components/nav/Navbar' import TradeAlertBanner from '@/components/ui/TradeAlertBanner' const siteUrl = process.env.NEXT_PUBLIC_SITE_URL || 'https://trumpsignal.com' interface LayoutProps { children: React.ReactNode params: Promise<{ locale: string }> } export async function generateMetadata({ params }: LayoutProps): Promise { const { locale } = await params const isZh = false // i18n shelved — Chinese branches kept as dead code for future revival; see messages/zh.json return { alternates: { canonical: `${siteUrl}/${locale}`, languages: { 'en': `${siteUrl}/en`, 'x-default': `${siteUrl}/en`, }, }, openGraph: { locale: isZh ? 'zh_CN' : 'en_US', alternateLocale: isZh ? ['en_US'] : ['zh_CN'], }, } } export default async function LocaleLayout({ children, params }: LayoutProps) { const { locale } = await params if (!locales.includes(locale as (typeof locales)[number])) { notFound() } const messages = await getMessages() const t = await getTranslations({ locale, namespace: 'footer' }) const href = (path: string) => `/${locale}${path}` return (
{children}
) }