feat(i18n): 添加多语言支持并重构相关组件

实现国际化(i18n)支持,包括:
1. 新增i18n配置文件和中间件
2. 重构页面和组件以支持多语言
3. 添加中英日三语翻译文件
4. 修改API路由以支持语言参数
5. 更新README文档说明i18n功能
6. 添加语言切换组件
7. 调整布局和路由结构支持多语言路径
This commit is contained in:
hex2077
2025-08-25 00:46:32 +08:00
parent f9db0215e0
commit 0b00a3b0ae
74 changed files with 3342 additions and 876 deletions

View File

@@ -1,11 +1,16 @@
import { getUserPointsTransactions } from "@/lib/points";
import { NextResponse, NextRequest } from "next/server";
import { getSessionData } from "@/lib/server-actions";
import { useTranslation } from '@/i18n';
import { getLanguageFromRequest } from '@/lib/utils';
export async function GET(request: NextRequest) {
const lang = getLanguageFromRequest(request);
const { t } = await useTranslation(lang, 'errors');
const session = await getSessionData();
if (!session || !session.user || !session.user.id) {
return NextResponse.json({ success: false, error: "Unauthorized" }, { status: 401 });
return NextResponse.json({ success: false, error: t("unauthorized") }, { status: 401 });
}
try {
@@ -16,7 +21,7 @@ export async function GET(request: NextRequest) {
// 校验 page 和 pageSize 是否为有效数字
if (isNaN(page) || page < 1 || isNaN(pageSize) || pageSize < 1) {
return NextResponse.json({ success: false, error: "Invalid pagination parameters" }, { status: 400 });
return NextResponse.json({ success: false, error: t("invalid_pagination_parameters") }, { status: 400 });
}
const transactions = await getUserPointsTransactions(userId, page, pageSize);
@@ -24,6 +29,6 @@ export async function GET(request: NextRequest) {
return NextResponse.json({ success: true, transactions });
} catch (error) {
console.error("Error fetching user points transactions:", error);
return NextResponse.json({ success: false, error: "Internal Server Error" }, { status: 500 });
return NextResponse.json({ success: false, error: t("internal_server_error") }, { status: 500 });
}
}