Spaces:
Sleeping
Sleeping
# File: language_translation_app.py | |
import streamlit as st | |
from transformers import MarianMTModel, MarianTokenizer | |
# Function to load the model and tokenizer | |
def load_model_and_tokenizer(model_name): | |
tokenizer = MarianTokenizer.from_pretrained(model_name) | |
model = MarianMTModel.from_pretrained(model_name) | |
return tokenizer, model | |
# Function to perform translation | |
def translate_text(input_text, src_lang, tgt_lang): | |
model_name = f"Helsinki-NLP/opus-mt-{src_lang}-{tgt_lang}" | |
try: | |
tokenizer, model = load_model_and_tokenizer(model_name) | |
inputs = tokenizer(input_text, return_tensors="pt", padding=True) | |
outputs = model.generate(**inputs) | |
translated_text = tokenizer.decode(outputs[0], skip_special_tokens=True) | |
return translated_text | |
except Exception as e: | |
return f"Error: Unable to translate. Details: {e}" | |
# Language options supported by Helsinki-NLP | |
language_pairs = { | |
"English": "en", | |
"French": "fr", | |
"German": "de", | |
"Spanish": "es", | |
"Chinese": "zh", | |
"Hindi": "hi", | |
"Urdu": "ur", | |
"Arabic": "ar", | |
"Russian": "ru", | |
"Italian": "it", | |
# Add more as required | |
} | |
# Streamlit App | |
def main(): | |
st.title("Language Translation App") | |
st.write("Translate text between multiple languages instantly.") | |
# Input and Output language selection | |
input_language = st.selectbox("Select Input Language", language_pairs.keys()) | |
output_language = st.selectbox("Select Output Language", language_pairs.keys()) | |
# User input for the text | |
input_text = st.text_area("Enter text to translate", height=200) | |
if st.button("Translate"): | |
if input_text.strip(): | |
src_lang = language_pairs[input_language] | |
tgt_lang = language_pairs[output_language] | |
translated_text = translate_text(input_text, src_lang, tgt_lang) | |
st.subheader("Translated Text") | |
st.write(translated_text) | |
else: | |
st.warning("Please enter text to translate.") | |
if __name__ == "__main__": | |
main() |