Files
freedakgmail a550d6d0fd feat: Heritage Globe - 中国文物全球分布地图
- Next.js + MapLibre GL 3D 地球
- CARTO dark-matter vector 底图
- 动态星空背景(闪烁、漂移、流星)
- 经纬网格线(graticule)
- 文物数据图层与朝代/类别筛选
- 中国风信息弹窗
- 中英双语 i18n
- LayerPanel + MapControls 浮动面板
2026-07-01 01:37:18 +08:00

49 lines
1.3 KiB
TypeScript

import type { Metadata } from "next";
import { NextIntlClientProvider } from 'next-intl';
import { getMessages } from 'next-intl/server';
import { setRequestLocale } from 'next-intl/server';
import { notFound } from 'next/navigation';
import { locales } from '@/i18n';
import "./globals.css";
import 'maplibre-gl/dist/maplibre-gl.css';
export const metadata: Metadata = {
title: "Heritage Globe - 中国文物全球分布",
description: "Explore Chinese cultural relics worldwide on an interactive map",
};
export function generateStaticParams() {
return locales.map((locale) => ({ locale }));
}
export default async function LocaleLayout({
children,
params: paramsPromise
}: {
children: React.ReactNode;
params: Promise<{ locale: string }>;
}) {
const params = await paramsPromise;
const locale = params.locale;
// 验证语言参数
if (!locales.includes(locale as any)) {
notFound();
}
// 设置请求的语言环境(启用静态渲染优化)
setRequestLocale(locale);
// 获取翻译消息
const messages = await getMessages();
return (
<html lang={locale}>
<body className="antialiased">
<NextIntlClientProvider messages={messages}>
{children}
</NextIntlClientProvider>
</body>
</html>
);
}