小小翻译官,一款用户多国语言翻译的微型翻译器

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"
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值