|
import gradio as gr |
|
from transformers import pipeline |
|
from langdetect import detect |
|
|
|
|
|
translator = pipeline("translation", model="Helsinki-NLP/opus-mt-mul-en") |
|
|
|
|
|
language_models = { |
|
"en": "Helsinki-NLP/opus-mt-en-ROMANCE", |
|
"fr": "Helsinki-NLP/opus-mt-ROMANCE-en", |
|
"de": "Helsinki-NLP/opus-mt-de-en", |
|
"es": "Helsinki-NLP/opus-mt-es-en", |
|
"hi": "Helsinki-NLP/opus-mt-hi-en", |
|
"ta": "Helsinki-NLP/opus-mt-ta-en" |
|
} |
|
|
|
def translate_file(file_obj, target_lang): |
|
text = file_obj.read().decode("utf-8") |
|
source_lang = detect(text) |
|
|
|
|
|
if target_lang == source_lang: |
|
return "Source and target languages are the same. No translation needed." |
|
|
|
model_name = None |
|
for k, v in language_models.items(): |
|
if target_lang == k: |
|
model_name = v |
|
break |
|
|
|
if not model_name: |
|
return f"Unsupported target language: {target_lang}" |
|
|
|
model = pipeline("translation", model=model_name) |
|
translated = model(text, max_length=1000)[0]['translation_text'] |
|
return f"Detected source: {source_lang.upper()} → Translated to: {target_lang.upper()}\n\n{translated}" |
|
|
|
gr.Interface( |
|
fn=translate_file, |
|
inputs=[ |
|
gr.File(label="Upload Text File (.txt)"), |
|
gr.Dropdown(choices=list(language_models.keys()), label="Target Language (Code)"), |
|
], |
|
outputs="text", |
|
title="Multilingual File Translator", |
|
description="Upload a .txt file in any language. Choose a target language to translate." |
|
).launch() |
|
|