Files
pdf-translation-interface/app/api/translate/route.ts

63 lines
2.0 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { type NextRequest, NextResponse } from "next/server"
import { generateText } from "ai"
export async function POST(request: NextRequest) {
try {
const formData = await request.formData()
const file = formData.get("file") as File
const targetLanguage = formData.get("targetLanguage") as string
if (!file || !targetLanguage) {
return NextResponse.json({ error: "缺少必要參數" }, { status: 400 })
}
// Extract text from PDF
const arrayBuffer = await file.arrayBuffer()
const buffer = Buffer.from(arrayBuffer)
// For demo purposes, we'll simulate PDF text extraction
// In production, you'd use a library like pdf-parse
const pdfText = `這是從PDF提取的示例文本。在實際應用中這裡會是真實的PDF內容。
這個應用展示了如何使用AI來翻譯文檔內容。您可以上傳任何PDF文件選擇目標語言然後獲得翻譯結果。
主要功能包括:
- 支持多種語言翻譯
- 清爽的用戶介面
- 簡單易用的操作流程`
// Get language name for better translation context
const languageNames: Record<string, string> = {
"zh-TW": "繁體中文",
"zh-CN": "簡體中文",
en: "English",
ja: "日本語",
ko: "한국어",
es: "Español",
fr: "Français",
de: "Deutsch",
it: "Italiano",
pt: "Português",
ru: "Русский",
ar: "العربية",
th: "ไทย",
vi: "Tiếng Việt",
}
const targetLanguageName = languageNames[targetLanguage] || targetLanguage
// Translate using AI SDK
const { text: translatedText } = await generateText({
model: "openai/gpt-4o-mini",
prompt: `請將以下文本翻譯成${targetLanguageName}。保持原文的格式和結構,只翻譯內容:
${pdfText}`,
})
return NextResponse.json({ translatedText })
} catch (error) {
console.error("翻譯錯誤:", error)
return NextResponse.json({ error: "翻譯過程中發生錯誤" }, { status: 500 })
}
}