File size: 3,884 Bytes
dd62cb6
89c9f22
dd62cb6
89c9f22
dd62cb6
89c9f22
dd62cb6
 
 
 
89c9f22
26b7a86
 
dd62cb6
 
 
 
 
380a44f
 
dd62cb6
 
380a44f
 
 
dd62cb6
 
 
380a44f
 
dd62cb6
380a44f
 
dd62cb6
 
89c9f22
380a44f
 
 
 
 
 
 
dd62cb6
26b7a86
5608ead
380a44f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
89c9f22
dd62cb6
 
380a44f
 
 
 
dd62cb6
 
 
380a44f
dd62cb6
380a44f
dd62cb6
 
380a44f
 
 
 
dd62cb6
 
 
 
 
380a44f
dd62cb6
380a44f
dd62cb6
 
 
 
 
 
 
380a44f
dd62cb6
380a44f
 
dd62cb6
89c9f22
6767df2
 
dd62cb6
9238eda
26b7a86
 
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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
import os
from huggingface_hub import InferenceClient
import gradio as gr

# Initialize the client with the correct provider
HF_TOKEN = os.environ.get("HF_TOKEN", None)
client = InferenceClient(
    provider="hf-inference",
    api_key=HF_TOKEN
)

port = int(os.environ.get("PORT", 7860))

def translate_text(text, src_lang, tgt_lang):
    """
    Function to handle translation using the MBART model
    """
    if not text.strip():
        return "Please enter any text to translate 😃"

    try:
        # Use the translation method with model-specific parameters
        src_code = lang_map[src_lang]
        tgt_code = lang_map[tgt_lang]

        result = client.translation(
            text,
            model="facebook/mbart-large-50-many-to-many-mmt",
            src_lang=src_code,
            tgt_lang=tgt_code
        )
        return result.translation_text

    except Exception as e:
        return f"Error in translation: {str(e)}"

custom_theme = gr.themes.Default().set(
    body_background_fill="#D3D3D3",   # light grey button 
    button_primary_background_fill="#000000",  # black background
    button_primary_text_color="#FFFFFF"        # white text
)


# Create the Gradio interface
with gr.Blocks() as demo:
    gr.Markdown("# Multilingual Text Translator Automated Deployment")


    lang_map = {
    "Arabic": "ar_AR",
    "Czech": "cs_CZ",
    "German": "de_DE",
    "English": "en_XX",
    "Spanish": "es_XX",
    "Estonian": "et_EE",
    "Finnish": "fi_FI",
    "French": "fr_XX",
    "Gujarati": "gu_IN",
    "Hindi": "hi_IN",
    "Italian": "it_IT",
    "Japanese": "ja_XX",
    "Kazakh": "kk_KZ",
    "Korean": "ko_KR",
    "Lithuanian": "lt_LT",
    "Latvian": "lv_LV",
    "Burmese": "my_MM",
    "Nepali": "ne_NP",
    "Dutch": "nl_XX",
    "Romanian": "ro_RO",
    "Russian": "ru_RU",
    "Sinhala": "si_LK",
    "Turkish": "tr_TR",
    "Vietnamese": "vi_VN",
    "Chinese": "zh_CN",
    "Afrikaans": "af_ZA",
    "Azerbaijani": "az_AZ",
    "Bengali": "bn_IN",
    "Persian": "fa_IR",
    "Hebrew": "he_IL",
    "Croatian": "hr_HR",
    "Indonesian": "id_ID",
    "Georgian": "ka_GE",
    "Khmer": "km_KH",
    "Macedonian": "mk_MK",
    "Malayalam": "ml_IN",
    "Mongolian": "mn_MN",
    "Marathi": "mr_IN",
    "Polish": "pl_PL",
    "Pashto": "ps_AF",
    "Portuguese": "pt_XX",
    "Swedish": "sv_SE",
    "Swahili": "sw_KE",
    "Tamil": "ta_IN",
    "Telugu": "te_IN",
    "Thai": "th_TH",
    "Tagalog": "tl_XX",
    "Ukrainian": "uk_UA",
    "Urdu": "ur_PK",
    "Xhosa": "xh_ZA",
    "Galician": "gl_ES",
    "Slovene": "sl_SI"
}


    with gr.Row():
        with gr.Column():
            src_lang = gr.Dropdown(
    choices=list(lang_map.keys()),
    value="English",     # now matches the choices
    label="Source Language"
)
            input_text = gr.Textbox(
                lines=4,
                placeholder="Enter text to translate...",
                label="Enter Text",
            )

        with gr.Column():
            tgt_lang = gr.Dropdown(
    choices=list(lang_map.keys()),
    value="English",
    label="Target Language"
)
            output_text = gr.Textbox(
                lines=4,
                label="Translation",
                interactive=False
            )

    # Translate button
    translate_btn = gr.Button("Translate ✨", elem_id="tr-btn", variant="primary")
    translate_btn.click(
        fn=translate_text,
        inputs=[input_text, src_lang, tgt_lang],
        outputs=output_text
    )
    
    # Clear button
    clear_btn = gr.Button("Clear", elem_id="clr-btn", variant="secondary")
    clear_btn.click(
      fn=lambda: ["", "English", "Russian", ""],
      outputs=[input_text, src_lang, tgt_lang, output_text]
    )

    print("hellow")

# Launch the interface
if __name__ == "__main__":
    # demo.launch(share=True)
    demo.launch(server_name="0.0.0.0", server_port=port)