File size: 1,682 Bytes
7d13edc |
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 |
import gradio as gr
from transformers import pipeline
from langdetect import detect
# Load translation pipeline (you can change to another model)
translator = pipeline("translation", model="Helsinki-NLP/opus-mt-mul-en") # English as target
# Supported languages and their model codes
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)
# Load appropriate model based on target language
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()
|