File size: 2,112 Bytes
b1add7a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
69
70
71
72
73
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()