import type { Metadata } from 'next';

interface LanguageLayoutProps {
    children: React.ReactNode;
    params: { lang: string };
}

export async function generateMetadata({
    params,
}: {
    params: Promise<{ lang: string }>;
}): Promise<Metadata> {
    // Map of language-specific metadata
    const metadataByLang: Record<string, Metadata> = {
        en: {
            title: 'AWS Cloud Services Partner - Professional Cloud Computing Solutions',
            description:
                'Providing comprehensive AWS cloud services including EC2, RDS, S3, AI/ML and more',
            keywords: 'AWS, cloud computing, EC2, RDS, S3, cloud services, AI, machine learning',
        },
        'zh-CN': {
            title: 'AWS云服务合作伙伴 - 专业云计算解决方案',
            description: '提供AWS云服务器、数据库、存储、AI/ML等全方位云计算服务',
            keywords: 'AWS,云服务器,云计算,数据库,存储,AI,机器学习',
        },
        'zh-TW': {
            title: 'AWS雲端服務合作夥伴 - 專業雲端運算解決方案',
            description: '提供AWS雲端伺服器、資料庫、儲存、AI/ML等全方位雲端運算服務',
            keywords: 'AWS,雲端伺服器,雲端運算,資料庫,儲存,AI,機器學習',
        },
        ko: {
            title: 'AWS 클라우드 서비스 파트너 - 전문 클라우드 컴퓨팅 솔루션',
            description: 'EC2, RDS, S3, AI/ML 등 포괄적인 AWS 클라우드 서비스 제공',
            keywords: 'AWS,클라우드 컴퓨팅,EC2,RDS,S3,클라우드 서비스,AI,머신러닝',
        },
        ja: {
            title: 'AWSクラウドサービスパートナー - プロフェッショナルクラウドコンピューティングソリューション',
            description: 'EC2、RDS、S3、AI/MLなど包括的なAWSクラウドサービスを提供',
            keywords: 'AWS,クラウドコンピューティング,EC2,RDS,S3,クラウドサービス,AI,機械学習',
        },
    };

    // Await params before using its properties
    const { lang } = await params;
    
    // Get metadata for the current language or fall back to English
    const metadata = metadataByLang[lang] || metadataByLang.en;

    return {
        ...metadata,
        alternates: {
            languages: {
                en: '/en',
                'zh-CN': '/zh-CN',
                'zh-TW': '/zh-TW',
                ko: '/ko',
                ja: '/ja',
                'x-default': '/en',
            },
        },
    };
}

export default function LanguageLayout({ children, params }: LanguageLayoutProps) {
    return <>{children}</>;
}
