AWSCLOUD/app/layout.tsx

92 lines
3.5 KiB
TypeScript
Raw Normal View History

2025-09-16 15:35:44 +08:00
import type { Metadata } from 'next';
import './globals.css';
export async function generateMetadata({
params,
}: {
params: { lang: string };
}): Promise<Metadata> {
const domain = 'https://your-domain.com';
// 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,機械学習',
},
};
// Get metadata for the current language or fall back to English
const metadata = metadataByLang[params.lang] || metadataByLang.en;
return {
metadataBase: new URL(domain),
...metadata,
alternates: {
languages: {
en: '/en',
'zh-CN': '/zh-CN',
'zh-TW': '/zh-TW',
ko: '/ko',
ja: '/ja',
'x-default': '/en',
},
},
openGraph: {
title: metadata.title || undefined,
description: metadata.description || undefined,
url: `${domain}/${params.lang}`,
siteName: 'AWS Cloud Services Partner',
images: [
{
url: '/og-image.png', // Must be an absolute URL
width: 1200,
height: 630,
},
],
locale: params.lang,
type: 'website',
},
twitter: {
card: 'summary_large_image',
title: metadata.title || undefined,
description: metadata.description || undefined,
images: ['/og-image.png'], // Must be an absolute URL
},
};
}
export default function RootLayout({
children,
params,
}: Readonly<{ children: React.ReactNode; params: { lang: string } }>) {
return (
<html lang={params.lang}>
<body>
{children}
</body>
</html>
);
}