多语言优化

This commit is contained in:
xintaofei
2026-03-07 10:24:13 +08:00
parent 934f689b08
commit 28babff52c
7 changed files with 115 additions and 21 deletions

34
src/i18n/messages.ts Normal file
View File

@@ -0,0 +1,34 @@
import type { AbstractIntlMessages } from "next-intl"
import enMessages from "@/i18n/messages/en.json"
import type { AppLocale } from "@/lib/types"
const MESSAGE_CACHE = new Map<AppLocale, AbstractIntlMessages>([
["en", enMessages],
])
async function loadMessages(locale: AppLocale): Promise<AbstractIntlMessages> {
switch (locale) {
case "zh_cn":
return (await import("@/i18n/messages/zh-CN.json")).default
case "zh_tw":
return (await import("@/i18n/messages/zh-TW.json")).default
case "en":
default:
return enMessages
}
}
export function getFallbackMessages(): AbstractIntlMessages {
return enMessages
}
export async function getMessagesForLocale(
locale: AppLocale
): Promise<AbstractIntlMessages> {
const cached = MESSAGE_CACHE.get(locale)
if (cached) return cached
const messages = await loadMessages(locale)
MESSAGE_CACHE.set(locale, messages)
return messages
}