export interface SitemapUrl { url: string; lastModified: Date; changeFrequency: 'always' | 'hourly' | 'daily' | 'weekly' | 'monthly' | 'yearly' | 'never'; priority: number; } export const supportedLocales = ['zh-CN', 'zh-TW', 'en', 'ko', 'ja']; export const pages = [ { path: '', priority: 1.0, changeFrequency: 'weekly' as const, }, { path: '/products', priority: 0.9, changeFrequency: 'weekly' as const, }, { path: '/pricing', priority: 0.9, changeFrequency: 'monthly' as const, }, { path: '/support', priority: 0.8, changeFrequency: 'monthly' as const, }, { path: '/contact', priority: 0.7, changeFrequency: 'monthly' as const, }, { path: '/sitemap', priority: 0.5, changeFrequency: 'monthly' as const, }, ]; export function generateSitemapUrls(baseUrl: string): SitemapUrl[] { const urls: SitemapUrl[] = []; const now = new Date(); supportedLocales.forEach((locale) => { pages.forEach((page) => { urls.push({ url: `${baseUrl}/${locale}${page.path}`, lastModified: now, changeFrequency: page.changeFrequency, priority: page.priority, }); }); }); return urls; } export function generateSitemapXML(urls: SitemapUrl[]): string { const urlEntries = urls .map( (url) => ` ${url.url} ${url.lastModified.toISOString()} ${url.changeFrequency} ${url.priority} `, ) .join(''); return ` ${urlEntries} `; }