File size: 4,896 Bytes
b195470
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
import gradio as gr

model = None
tokenizer = None

# device = 0 if torch.cuda.is_available() else -1

LANGUAGES = {
    "Hindi": "hin_Deva",
    "Bengali": "ben_Beng",
    "Telugu": "tel_Telu",
    "Marathi": "mar_Deva",
    "Tamil": "tam_Taml",
    "Urdu": "urd_Arab",
    "Gujarati": "guj_Gujr",
    "Kannada": "kan_Knda",
    "Odia": "ori_Orya",
    "Malayalam": "mal_Mlym",
    "Punjabi": "pan_Guru",
    "Assamese": "asm_Beng",
    "Maithili": "mai_Mith",
    "Santali": "sat_Olck",
    "Kashmiri": "kas_Arab",
    "Nepali": "nep_Deva",
    "Sindhi": "snd_Arab",
    "Konkani": "kok_Deva",
    "Dogri": "dgo_Deva",
    "Manipuri": "mni_Beng",
    "Bodo": "brx_Deva"
}

def translate(src_lang, text, tgt_lang):
    
    return "Translation output will appear here..."

def store_feedback(rating, feedback_text):
    if not rating:
        gr.Warning("Please select a rating before submitting feedback.", duration=5)
        return None
    
    if not feedback_text or feedback_text.strip() == "":
        gr.Warning("Please provide some feedback before submitting.", duration=5)
        return None
    
    gr.Info("Feedback submitted successfully!")
    return "Thank you for your feedback!"

css = """
      #col-container {max-width: 80%; margin-left: auto; margin-right: auto;}
      #header {text-align: center;}
      .message { font-size: 1.2em; }
      #feedback-section { margin-top: 30px; border-top: 1px solid #ddd; padding-top: 20px; }
      """

with gr.Blocks(theme=gr.themes.Default(), css=css) as demo:
    gr.Markdown("# IndicTrans3 Demo πŸš€", elem_id="header")
    gr.Markdown("Translate text between multiple Indic languages using the latest IndicTrans3 model from AI4Bharat. This model is trained on the --- dataset and supports translation to 22 Indic languages. Setting a state-of-the-art benchmark on multiple translation tasks, IndicTrans3 is a powerful model that can handle complex translation tasks with ease.", elem_id="description")
    
    with gr.Column(elem_id="col-container"):
        with gr.Row():
            with gr.Column():
                src_lang = gr.Dropdown(
                    ["English"], 
                    value="English", 
                    label="Translate From", 
                    elem_id="translate-from"
                )
                
                text_input = gr.Textbox(
                    placeholder="Enter text to translate...", 
                    label="", 
                    lines=10,
                    max_lines=100,
                    elem_id="input-text"
                )
                
            with gr.Column():
                tgt_lang = gr.Dropdown(
                    list(LANGUAGES.keys()), 
                    value="Hindi",
                    label="Translate To", 
                    elem_id="translate-to"
                )
                
                text_output = gr.Textbox(
                    label="", 
                    lines=10,
                    max_lines=100,
                    elem_id="output-text"
                )
        
        btn_submit = gr.Button("Translate")
        btn_submit.click(fn=translate, inputs=[src_lang, text_input, tgt_lang], outputs=text_output)
        
        gr.Examples(
            examples=[
                ["English", "Hello, how are you today? I hope you're doing well.", "Telugu"],
                ["English", "Hello, how are you today? I hope you're doing well.", "Punjabi"],
                ["English", "Hello, how are you today? I hope you're doing well.", "Hindi"],
                ["English", "Hello, how are you today? I hope you're doing well.", "Marathi"],
                ["English", "Hello, how are you today? I hope you're doing well.", "Malayalam"]
            ],
            inputs=[src_lang, text_input, tgt_lang],
            outputs=text_output,
            fn=translate,
            cache_examples=True,
            examples_per_page=5
        )
        
        with gr.Column(elem_id="feedback-section"):
            gr.Markdown("## Rate Translation & Provide Feedback πŸ“")
            gr.Markdown("Help us improve the translation quality by providing your feedback and rating.")
            with gr.Row():
                rating = gr.Radio(
                    ["1", "2", "3", "4", "5"],
                    label="Translation Rating (1-5)"
                )
            
            feedback_text = gr.Textbox(
                placeholder="Share your feedback about the translation...",
                label="Feedback",
                lines=3
            )
            
            feedback_submit = gr.Button("Submit Feedback")
            feedback_result = gr.Textbox(label="", visible=False)
            
            feedback_submit.click(
                fn=store_feedback, 
                inputs=[rating, feedback_text], 
                outputs=feedback_result
            )

demo.launch()