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() | |