Spaces:
Sleeping
Sleeping
File size: 2,167 Bytes
77230c0 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
import gradio as gr
from deep_translator import GoogleTranslator
# 使用 deep-translator 官方支援的語言清單
SUPPORTED_LANGUAGES = {
'en': '英文',
'es': '西班牙語',
'fr': '法語',
'de': '德語',
'zh-CN': '中文(簡體)',
'zh-TW': '中文(繁體)',
'it': '義大利語',
'ja': '日語',
'ko': '韓語',
'ru': '俄語',
'pt': '葡萄牙語',
'ar': '阿拉伯語'
}
# 提供選擇語言的下拉選單選項
LANGUAGE_CHOICES = [(code, name) for code, name in SUPPORTED_LANGUAGES.items()]
def translate_text(text, target_language_full):
"""將輸入文字翻譯成指定語言"""
try:
# 提取語言代碼
target_language = target_language_full.split(":")[0].strip()
if target_language not in SUPPORTED_LANGUAGES:
raise ValueError("所選語言不支援")
# 翻譯文字
translator = GoogleTranslator(source='auto', target=target_language)
return translator.translate(text)
except Exception as e:
# 回傳友善的錯誤提示
return f"翻譯失敗:{str(e)}\n請確認所選語言是否正確。"
# Gradio UI
with gr.Blocks() as demo:
gr.Markdown("## 🌍 多國語言翻譯機 ")
gr.Markdown(" 輸入文字並選擇翻譯後的語言,點擊 **執行翻譯** 以查看結果。")
# 文字輸入框(支援段落)
text_input = gr.TextArea(label="輸入文字", placeholder="請輸入要翻譯的文字...")
# 語言下拉選單
language_dropdown = gr.Dropdown(
choices=[f"{code}: {name}" for code, name in LANGUAGE_CHOICES],
label="選擇翻譯後的語言",
value='en: 英文', # 預設翻譯到英文
interactive=True
)
# 翻譯按鈕
translate_button = gr.Button("執行翻譯")
# 翻譯結果顯示框
output_text = gr.Textbox(label="翻譯結果", interactive=False)
# 配置按鈕的點擊事件
translate_button.click(
fn=translate_text,
inputs=[text_input, language_dropdown],
outputs=output_text
)
# 啟動 Gradio 應用
demo.launch() |