Spaces:
Sleeping
Sleeping
import streamlit as st | |
from transformers import MarianMTModel, MarianTokenizer | |
# Specified different languages | |
LANGUAGES = { | |
"English": "en", | |
"French": "fr", | |
"German": "de", | |
"Spanish": "es", | |
"Italian": "it", | |
"Portuguese": "pt", | |
"Russian": "ru", | |
"Chinese": "zh", | |
"Japanese": "ja", | |
"Arabic": "ar", | |
} | |
# Helper function to load the model and tokenizer | |
def load_translation_model(src_lang, tgt_lang): # Corrected parameter names | |
model_name = f"Helsinki-NLP/opus-mt-{src_lang}-{tgt_lang}" # Corrected typo in model_name | |
tokenizer = MarianTokenizer.from_pretrained(model_name) | |
model = MarianMTModel.from_pretrained(model_name) | |
return tokenizer, model | |
# Translation function | |
def translate_text(tokenizer, model, text): | |
inputs = tokenizer(text, return_tensors='pt', padding=True) | |
translated = model.generate(**inputs) | |
return tokenizer.decode(translated[0], skip_special_tokens=True) | |
# Streamlit App | |
st.title("Language Translation APP 🌍") | |
st.write("Translate text between multiple languages using open-source models.") | |
# Language selection | |
col1, col2 = st.columns(2) | |
with col1: | |
source_language = st.selectbox("Select Source Language 🌐", list(LANGUAGES.keys())) | |
with col2: | |
target_language = st.selectbox("Select Target Language 🌍", list(LANGUAGES.keys())) | |
# Input Text | |
text_to_translate = st.text_area("Enter text to translate", height=150) | |
# Translate button | |
if st.button("Translate"): | |
if source_language == target_language: | |
st.warning("Source and target language must be different") | |
elif not text_to_translate.strip(): | |
st.warning("Please enter some text to translate") | |
else: | |
src_lang = LANGUAGES[source_language] | |
tgt_lang = LANGUAGES[target_language] | |
try: | |
# Load model and tokenizer | |
tokenizer, model = load_translation_model(src_lang, tgt_lang) | |
# Perform translation | |
translated_text = translate_text(tokenizer, model, text_to_translate) | |
# Display result | |
st.subheader("Translated Text 🔄:") | |
st.write(translated_text) | |
except Exception as e: | |
st.error(f"Error: {str(e)}") | |