feat(i18n): add zh/en locale switching

This commit is contained in:
Leon-in
2026-04-29 10:36:24 +08:00
parent 437dc976fb
commit 3213f00b7b
11 changed files with 915 additions and 33 deletions
+25 -18
View File
@@ -1,5 +1,7 @@
import type { Metadata } from "next"
import { Inter, Inter_Tight } from "next/font/google"
import { NextIntlClientProvider } from "next-intl"
import { getLocale, getMessages } from "next-intl/server"
import { ThemeProvider } from "next-themes"
import Header from "@/components/Header"
import Footer from "@/components/Footer"
@@ -40,28 +42,33 @@ export const metadata: Metadata = {
},
}
export default function RootLayout({
export default async function RootLayout({
children,
}: Readonly<{
children: React.ReactNode
}>) {
const locale = await getLocale()
const messages = await getMessages()
return (
<html
lang="zh-CN"
className={`w-mod-js w-mod-ix3 ${inter.variable} ${interTight.variable}`}
suppressHydrationWarning
>
<body className={inter.className}>
<ThemeProvider attribute="class" defaultTheme="light" enableSystem>
<div className="page-wrapper">
<Header />
<PageTransition>{children}</PageTransition>
<Footer />
</div>
<RevealObserver />
<GsapAnimations />
</ThemeProvider>
</body>
</html>
<NextIntlClientProvider locale={locale} messages={messages}>
<html
lang={locale}
className={`w-mod-js w-mod-ix3 ${inter.variable} ${interTight.variable}`}
suppressHydrationWarning
>
<body className={inter.className}>
<ThemeProvider attribute="class" defaultTheme="light" enableSystem>
<div className="page-wrapper">
<Header />
<PageTransition>{children}</PageTransition>
<Footer />
</div>
<RevealObserver />
<GsapAnimations />
</ThemeProvider>
</body>
</html>
</NextIntlClientProvider>
)
}