"use client" import type React from "react" import { useState } from "react" import { Upload, FileText, Languages, Loader2 } from "lucide-react" import { Button } from "@/components/ui/button" import { Card } from "@/components/ui/card" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select" import { Label } from "@/components/ui/label" const LANGUAGES = [ { code: "zh-TW", name: "繁體中文" }, { code: "zh-CN", name: "簡體中文" }, { code: "en", name: "English" }, { code: "ja", name: "日本語" }, { code: "ko", name: "한국어" }, { code: "es", name: "Español" }, { code: "fr", name: "Français" }, { code: "de", name: "Deutsch" }, { code: "it", name: "Italiano" }, { code: "pt", name: "Português" }, { code: "ru", name: "Русский" }, { code: "ar", name: "العربية" }, { code: "th", name: "ไทย" }, { code: "vi", name: "Tiếng Việt" }, ] export function PDFTranslator() { const [file, setFile] = useState(null) const [targetLanguage, setTargetLanguage] = useState("") const [isTranslating, setIsTranslating] = useState(false) const [translatedText, setTranslatedText] = useState("") const [isDragging, setIsDragging] = useState(false) const handleFileChange = (e: React.ChangeEvent) => { const selectedFile = e.target.files?.[0] if (selectedFile && selectedFile.type === "application/pdf") { setFile(selectedFile) setTranslatedText("") } else { alert("請選擇PDF文件") } } const handleDragOver = (e: React.DragEvent) => { e.preventDefault() setIsDragging(true) } const handleDragLeave = (e: React.DragEvent) => { e.preventDefault() setIsDragging(false) } const handleDrop = (e: React.DragEvent) => { e.preventDefault() setIsDragging(false) const droppedFile = e.dataTransfer.files[0] if (droppedFile && droppedFile.type === "application/pdf") { setFile(droppedFile) setTranslatedText("") } else { alert("請選擇PDF文件") } } const handleTranslate = async () => { if (!file || !targetLanguage) { alert("請上傳PDF文件並選擇目標語言") return } setIsTranslating(true) setTranslatedText("") try { const formData = new FormData() formData.append("file", file) formData.append("targetLanguage", targetLanguage) const response = await fetch("/api/translate", { method: "POST", body: formData, }) if (!response.ok) { throw new Error("翻譯失敗") } const data = await response.json() setTranslatedText(data.translatedText) } catch (error) { console.error("翻譯錯誤:", error) alert("翻譯過程中發生錯誤,請稍後再試") } finally { setIsTranslating(false) } } return (
{/* Step 1: Upload File */}

步驟 1: 上傳文件

請上傳您想要翻譯的PDF文件

拖放PDF文件到這裡

{/* Step 2: Select Language */}

步驟 2: 選擇目標語言

選擇您想要翻譯成的語言

{/* Step 3: Translation Result */} {translatedText && (

步驟 3: 翻譯結果

您的文件已成功翻譯

{translatedText}
)}
) }