Spaces:
Sleeping
Sleeping
| 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) | |