import tkinter as tk
from tkinter import ttk, messagebox
from googletrans import Translator

class TranslationApp:
    def __init__(self, root):
        self.root = root
        self.root.title("简易翻译器")
        self.root.geometry("600x400")
        self.root.resizable(False, False)

        # 创建翻译器对象
        self.translator = Translator()

        # 支持的语言列表（常用）
        self.languages = {
            "中文": "zh-cn",
            "英文": "en",
            "日文": "ja",
            "韩文": "ko",
            "法文": "fr",
            "德文": "de",
            "西班牙文": "es",
            "俄文": "ru",
            "阿拉伯文": "ar"
        }
        self.lang_names = list(self.languages.keys())
        self.lang_codes = list(self.languages.values())

        # ---- 界面布局 ----
        # 源语言选择
        tk.Label(root, text="源语言：").grid(row=0, column=0, padx=5, pady=10, sticky="w")
        self.src_lang = ttk.Combobox(root, values=self.lang_names, state="readonly", width=12)
        self.src_lang.grid(row=0, column=1, padx=5, pady=10, sticky="w")
        self.src_lang.set("中文")

        # 目标语言选择
        tk.Label(root, text="目标语言：").grid(row=0, column=2, padx=5, pady=10, sticky="w")
        self.dest_lang = ttk.Combobox(root, values=self.lang_names, state="readonly", width=12)
        self.dest_lang.grid(row=0, column=3, padx=5, pady=10, sticky="w")
        self.dest_lang.set("英文")

        # 输入文本框（带滚动条）
        tk.Label(root, text="输入文本：").grid(row=1, column=0, padx=5, pady=5, sticky="nw")
        self.input_text = tk.Text(root, height=8, width=60, wrap=tk.WORD)
        self.input_text.grid(row=2, column=0, columnspan=4, padx=5, pady=5)

        # 翻译按钮
        self.trans_btn = tk.Button(root, text="翻译", command=self.translate, bg="#4CAF50", fg="white", font=("Arial", 12))
        self.trans_btn.grid(row=3, column=0, columnspan=4, pady=10)

        # 输出文本框（带滚动条）
        tk.Label(root, text="翻译结果：").grid(row=4, column=0, padx=5, pady=5, sticky="nw")
        self.output_text = tk.Text(root, height=8, width=60, wrap=tk.WORD, state="normal")
        self.output_text.grid(row=5, column=0, columnspan=4, padx=5, pady=5)

        # 清除按钮
        self.clear_btn = tk.Button(root, text="清空", command=self.clear_all, bg="#f44336", fg="white")
        self.clear_btn.grid(row=6, column=0, columnspan=4, pady=5)

    def translate(self):
        """执行翻译"""
        src_text = self.input_text.get("1.0", tk.END).strip()
        if not src_text:
            messagebox.showwarning("警告", "请输入要翻译的文本！")
            return

        # 获取语言代码
        src_code = self.languages[self.src_lang.get()]
        dest_code = self.languages[self.dest_lang.get()]

        try:
            # 执行翻译
            result = self.translator.translate(src_text, src=src_code, dest=dest_code)
            # 显示结果
            self.output_text.delete("1.0", tk.END)
            self.output_text.insert("1.0", result.text)
        except Exception as e:
            messagebox.showerror("翻译错误", f"翻译失败，请检查网络或稍后重试。\n错误信息：{str(e)}")

    def clear_all(self):
        """清空输入和输出"""
        self.input_text.delete("1.0", tk.END)
        self.output_text.delete("1.0", tk.END)

if __name__ == "__main__":
    root = tk.Tk()
    app = TranslationApp(root)
    root.mainloop()