import gradio as gr from google_trans import LANGCODES from translate.translate import Translator from logger import log LANGUAGES = [lang.title() for lang in LANGCODES.keys()] def translate(text, from_lang, to_lang, history): if text.strip() == "": return "", history if not from_lang: raise gr.Error("From Language not selected") if not to_lang: raise gr.Error("To Language not selected") translator = Translator( from_lang=LANGCODES[from_lang.lower()], to_lang=LANGCODES[to_lang.lower()] ) translated_text = translator.translate(text) history.append((text, translated_text)) log(text, from_lang, to_lang, translated_text) return "", history def switch_languages(from_lang, to_lang): return to_lang, from_lang with gr.Blocks() as app: gr.Markdown("# Tranlato Bot 🤖") chat_bot = gr.Chatbot() text = gr.Textbox(label="Text", show_label=False, placeholder="Enter text to Translate...") with gr.Row(): from_lang = gr.Dropdown(LANGUAGES, label="From Language", scale=2) switch = gr.Button("⇄") to_lang = gr.Dropdown(LANGUAGES, label="To Language", scale=2) with gr.Row(): translate_btn = gr.Button("Translate") gr.ClearButton([text, from_lang, to_lang, chat_bot]) gr.Examples( examples=[ ["The weather is nice today.", "English", "Tamil"], ["இன்று காலநிலை நல்லது.", "Tamil", "English"], ["अब क्या समय हो रहा है?", "Hindi", "Spanish"], ["¿Qué hora es?", "Spanish", "Hindi"], ], inputs=[text, from_lang, to_lang, chat_bot], ) switch.click(switch_languages, [from_lang, to_lang], [from_lang, to_lang]) text.submit(translate, [text, from_lang, to_lang, chat_bot], [text, chat_bot]) translate_btn.click( translate, [text, from_lang, to_lang, chat_bot], [text, chat_bot] ) app.title = "Translato Bot" app.launch()