import tkinter as tk
from tkinter import ttk, scrolledtext, messagebox
import requests
import hashlib
import random
import json

# ===================== 百度翻译配置（替换成你自己的）=====================
APP_ID = "你的百度翻译APP ID"
APP_KEY = "你的百度翻译密钥"
# ======================================================================

# 语言映射
lang_map = {
    "中文": "zh",
    "英语": "en",
    "日语": "jp",
    "韩语": "kor"
}

def baidu_translate(query, from_lang, to_lang):
    """调用百度翻译API"""
    salt = str(random.randint(32768, 65536))
    sign = hashlib.md5((APP_ID + query + salt + APP_KEY).encode()).hexdigest()
    url = "https://fanyi-api.baidu.com/api/trans/vip/translate"
    params = {
        "q": query,
        "from": from_lang,
        "to": to_lang,
        "appid": APP_ID,
        "salt": salt,
        "sign": sign
    }
    try:
        res = requests.get(url, params=params, timeout=10)
        data = res.json()
        if "trans_result" in data:
            return data["trans_result"][0]["dst"]
        else:
            return f"翻译失败：{data.get('error_msg', '未知错误')}"
    except Exception as e:
        return f"网络异常：{str(e)}"

def translate_btn_click():
    """翻译按钮事件"""
    text_input = input_text.get("1.0", tk.END).strip()
    if not text_input:
        messagebox.showwarning("提示", "请输入要翻译的文本！")
        return
    from_name = combo_from.get()
    to_name = combo_to.get()
    from_code = lang_map[from_name]
    to_code = lang_map[to_name]
    # 调用翻译
    result = baidu_translate(text_input, from_code, to_code)
    # 清空输出框并写入结果
    output_text.delete("1.0", tk.END)
    output_text.insert("1.0", result)

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

def copy_result():
    """复制译文到剪贴板"""
    res = output_text.get("1.0", tk.END).strip()
    if not res:
        messagebox.showinfo("提示", "暂无翻译结果！")
        return
    root.clipboard_clear()
    root.clipboard_append(res)
    messagebox.showinfo("成功", "译文已复制到剪贴板！")

# ===================== 创建GUI界面 =====================
root = tk.Tk()
root.title("简易多语言翻译工具")
root.geometry("680x460")
root.resizable(False, False)

# 顶部语言选择区域
frame_top = tk.Frame(root)
frame_top.pack(pady=12)

tk.Label(frame_top, text="源语言：", font=("微软雅黑", 11)).grid(row=0, column=0, padx=6)
combo_from = ttk.Combobox(frame_top, values=list(lang_map.keys()), width=8, font=("微软雅黑",10))
combo_from.current(0)
combo_from.grid(row=0, column=1, padx=6)

tk.Label(frame_top, text="→", font=("微软雅黑",14)).grid(row=0, column=2, padx=10)

tk.Label(frame_top, text="目标语言：", font=("微软雅黑", 11)).grid(row=0, column=3, padx=6)
combo_to = ttk.Combobox(frame_top, values=list(lang_map.keys()), width=8, font=("微软雅黑",10))
combo_to.current(1)
combo_to.grid(row=0, column=4, padx=6)

# 输入文本框
tk.Label(root, text="原文输入：", font=("微软雅黑", 11)).pack(anchor="w", padx=20)
input_text = scrolledtext.ScrolledText(root, width=80, height=7, font=("微软雅黑",10))
input_text.pack(padx=20, pady=4)

# 按钮区域
frame_btn = tk.Frame(root)
frame_btn.pack(pady=8)
tk.Button(frame_btn, text="开始翻译", command=translate_btn_click, width=10, bg="#409EFF", fg="white", font=("微软雅黑",10)).grid(row=0, column=0, padx=8)
tk.Button(frame_btn, text="一键清空", command=clear_all, width=10, bg="#909399", fg="white", font=("微软雅黑",10)).grid(row=0, column=1, padx=8)
tk.Button(frame_btn, text="复制译文", command=copy_result, width=10, bg="#67C23A", fg="white", font=("微软雅黑",10)).grid(row=0, column=2, padx=8)

# 输出文本框
tk.Label(root, text="翻译结果：", font=("微软雅黑", 11)).pack(anchor="w", padx=20)
output_text = scrolledtext.ScrolledText(root, width=80, height=7, font=("微软雅黑",10))
output_text.pack(padx=20, pady=4)

# 启动窗口循环
root.mainloop()