import tkinter as tk
from tkinter import ttk
import json
from translate import Translator
# 读取语言映射
with open('languages.json', 'r', encoding='utf-8') as f:
data = json.load(f)
LANGUAGES_ZH = data['languages']
# 创建主窗口
root = tk.Tk()
root.title("小小翻译官")
root.geometry("600x600")
# 定义翻译函数
def translate_text():
try:
src_lang_key = [key for key, value in LANGUAGES_ZH.items() if value == src_lang_combobox.get()][0]
dest_lang_key = [key for key, value in LANGUAGES_ZH.items() if value == dest_lang_combobox.get()][0]
original_text = original_textbox.get("1.0", tk.END).strip()
if original_text:
translator = Translator(from_lang=src_lang_key, to_lang=dest_lang_key)
translation = translator.translate(original_text)
translated_textbox.delete("1.0", tk.END)
translated_textbox.insert(tk.END, translation)
else:
translated_textbox.delete("1.0", tk.END)
translated_textbox.insert(tk.END, "请输入要翻译的文本")
except Exception as e:
translated_textbox.delete("1.0", tk.END)
translated_textbox.insert(tk.END, f"翻译时出错: {str(e)}")
# 创建语言选择框
src_lang_label = tk.Label(root, text="源语言")
src_lang_label.grid(row=0, column=0, padx=10, pady=5, sticky='w')
src_lang_combobox = ttk.Combobox(root, values=list(LANGUAGES_ZH.values()))
src_lang_combobox.grid(row=0, column=1, padx=10, pady=5, sticky='ew')
src_lang_combobox.set("中文(简体)") # 默认选择中文(简体)
dest_lang_label = tk.Label(root, text="目标语言")
dest_lang_label.grid(row=1, column=0, padx=10, pady=5, sticky='w')
dest_lang_combobox = ttk.Combobox(root, values=list(LANGUAGES_ZH.values()))
dest_lang_combobox.grid(row=1, column=1, padx=10, pady=5, sticky='ew')
dest_lang_combobox.set("英语") # 默认选择英文
# 创建原文输入框
original_text_label = tk.Label(root, text="原文")
original_text_label.grid(row=2, column=0, padx=10, pady=5, sticky='w')
original_textbox = tk.Text(root, height=10, width=50)
original_textbox.grid(row=2, column=1, padx=10, pady=5, sticky='nsew')
# 创建译文输出框
translated_text_label = tk.Label(root, text="译文")
translated_text_label.grid(row=3, column=0, padx=10, pady=5, sticky='w')
translated_textbox = tk.Text(root, height=10, width=50)
translated_textbox.grid(row=3, column=1, padx=10, pady=5, sticky='nsew')
# 创建翻译按钮
translate_button = tk.Button(root, text="确认", command=translate_text)
translate_button.grid(row=4, column=0, columnspan=2, padx=20, pady=20, sticky='ew')
# 设置列和行权重,使其随窗口大小变化
root.columnconfigure(1, weight=1)
root.rowconfigure(2, weight=1)
root.rowconfigure(3, weight=1)
# 运行主循环
root.mainloop()
可翻译语言
{
"languages": {
"zh-cn": "中文(简体)",
"zh-tw": "中文(繁体)",
"en": "English",
"ru": "Русский",
"fr": "Français",
"ko": "한국어",
"ja": "日本語",
"de": "Deutsch",
"vi": "Tiếng Việt",
"ar": "العربية",
"es": "Español",
"pt": "Português",
"th": "ไทย",
"hmn": "Hmoob",
"af": "Afrikaans",
"sq": "Shqip",
"am": "አማርኛ",
"hy": "Հայերեն",
"az": "Azərbaycan dili",
"eu": "Euskara",
"be": "Беларуская",
"bn": "বাংলা",
"bs": "Bosanski",
"bg": "Български",
"ca": "Català",
"ceb": "Cebuano",
"ny": "Chichewa",
"co": "Corsu",
"hr": "Hrvatski",
"cs": "Čeština",
"da": "Dansk",
"nl": "Nederlands",
"eo": "Esperanto",
"et": "Eesti",
"tl": "Filipino",
"fi": "Suomi",
"fy": "Frysk",
"gl": "Galego",
"ka": "ქართული",
"el": "Ελληνικά",
"gu": "ગુજરાતી",
"ht": "Kreyòl Ayisyen",
"ha": "Hausa",
"haw": "ʻŌlelo Hawaiʻi",
"he": "עברית",
"hi": "हिन्दी",
"hu": "Magyar",
"is": "Íslenska",
"ig": "Igbo",
"id": "Bahasa Indonesia",
"ga": "Gaeilge",
"it": "Italiano",
"jw": "Basa Jawa",
"kn": "ಕನ್ನಡ",
"kk": "Қазақша",
"km": "ភាសាខ្មែរ",
"rw": "Ikinyarwanda",
"ku": "Kurdî",
"ky": "Кыргызча",
"lo": "ລາວ",
"la": "Latine",
"lv": "Latviešu",
"lt": "Lietuvių",
"lb": "Lëtzebuergesch",
"mk": "Македонски",
"mg": "Malagasy",
"ms": "Bahasa Melayu",
"ml": "മലയാളം",
"mt": "Malti",
"mi": "Te Reo Māori",
"mr": "मराठी",
"mn": "Монгол",
"my": "မြန်မာစာ",
"ne": "नेपाली",
"no": "Norsk",
"or": "ଓଡ଼ିଆ",
"ps": "پښتو",
"fa": "فارسی",
"pl": "Polski",
"pa": "ਪੰਜਾਬੀ",
"ro": "Română",
"sm": "Gagana Samoa",
"gd": "Gàidhlig",
"sr": "Српски",
"st": "Sesotho",
"sn": "Shona",
"sd": "سنڌي",
"si": "සිංහල",
"sk": "Slovenčina",
"sl": "Slovenščina",
"so": "Soomaali",
"su": "Basa Sunda",
"sw": "Kiswahili",
"sv": "Svenska",
"tg": "Тоҷикӣ",
"ta": "தமிழ்",
"tt": "Татарча",
"te": "తెలుగు",
"tr": "Türkçe",
"tk": "Türkmen",
"uk": "Українська",
"ur": "اردو",
"ug": "ئۇيغۇرچە",
"uz": "Oʻzbek",
"cy": "Cymraeg",
"xh": "isiXhosa",
"yi": "ייִדיש",
"yo": "Yorùbá",
"zu": "isiZulu"
}
}