Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| from transformers import pipeline | |
| import json | |
| from langdetect import detect | |
| # Initialize the translation pipeline with the specific model | |
| text_translator = pipeline("translation", model="facebook/nllb-200-distilled-600M") | |
| # Load the JSON table containing language mappings | |
| with open('language.json') as f: | |
| language_data = json.load(f) | |
| def get_flores_200_code(language): | |
| """ | |
| Retrieves the FLORES-200 code for a given language from the loaded JSON data. | |
| Args: | |
| language (str): The name of the language. | |
| Returns: | |
| str: The FLORES-200 code for the language, or None if not found. | |
| """ | |
| for code in language_data: | |
| if code['Language'] == language: | |
| return code['FLORES-200 code'] | |
| return None | |
| def detect_language(text): | |
| """ | |
| Detects the language of the given text. | |
| Args: | |
| text (str): The text to detect language from. | |
| Returns: | |
| str: The detected language code. | |
| """ | |
| try: | |
| lang_code = detect(text) | |
| return lang_code | |
| except Exception as e: | |
| return str(e) | |
| def translate_text(text, source_language, destination_language): | |
| """ | |
| Translates text from the source language to the destination language using the T5 model. | |
| Args: | |
| text (str): The text to translate. | |
| source_language (str): The source language code. | |
| destination_language (str): The target language code. | |
| Returns: | |
| str: The translated text. | |
| """ | |
| src_code = get_flores_200_code(source_language) | |
| dest_code = get_flores_200_code(destination_language) | |
| if not src_code: | |
| return "Unsupported source language selected. Please choose a valid language." | |
| if not dest_code: | |
| return "Unsupported destination language selected. Please choose a valid language." | |
| try: | |
| # Perform translation using T5 model pipeline | |
| translation = text_translator(text, | |
| src_lang=src_code, | |
| tgt_lang=dest_code) | |
| translated_text = translation[0]["translation_text"] | |
| return translated_text | |
| except Exception as e: | |
| return f"Translation error: {str(e)}" | |
| def main(): | |
| # Create Gradio interface | |
| interface = gr.Interface( | |
| fn=translate_text, | |
| inputs=[ | |
| gr.Textbox(label="Input text to translate", lines=6, placeholder="Enter text..."), | |
| gr.Dropdown([code['Language'] for code in language_data], label="Select source language"), | |
| gr.Dropdown([code['Language'] for code in language_data], label="Select destination language") | |
| ], | |
| outputs=[gr.Textbox(label="Translated text", lines=4)], | |
| title="Multi-Language Translator", | |
| description="Translate text between multiple languages using the T5 model. Select the source and destination languages from the dropdown menus.", | |
| theme=gr.themes.Soft(), | |
| live=True # Enable live updates | |
| ) | |
| # Launch the Gradio interface | |
| interface.launch() | |
| if __name__ == "__main__": | |
| main() | |