import streamlit as st from transformers import MarianMTModel, MarianTokenizer st.set_page_config(page_title="Language Translator", layout="wide") # Function to load model and tokenizer based on selected languages def load_model_and_tokenizer(src_lang, tgt_lang): model_name = f"Helsinki-NLP/opus-mt-{src_lang}-{tgt_lang}" model = MarianMTModel.from_pretrained(model_name) tokenizer = MarianTokenizer.from_pretrained(model_name) return model, tokenizer # Function to translate text def translate_text(text, model, tokenizer): inputs = tokenizer(text, return_tensors="pt", padding=True) translated = model.generate(**inputs) return tokenizer.decode(translated[0], skip_special_tokens=True) # Streamlit app layout st.title("Language Translator App") st.write("Translate text between multiple languages using open-source models.") languages = { "English": "en", "French": "fr", "Spanish": "es", "German": "de", "Italian": "it", "Russian": "ru", "Chinese": "zh" } source_language = st.selectbox("Select Input Language:", options=list(languages.keys())) target_language = st.selectbox("Select Output Language:", options=list(languages.keys())) if source_language == target_language: st.warning("Input and output languages must be different.") else: src_lang_code = languages[source_language] tgt_lang_code = languages[target_language] with st.spinner("Loading translation model..."): model, tokenizer = load_model_and_tokenizer(src_lang_code, tgt_lang_code) col1, col2 = st.columns(2) with col1: text_to_translate = st.text_area("Enter text to translate:", height=300) with col2: if st.button("Translate"): if text_to_translate.strip(): with st.spinner("Translating..."): translated_text = translate_text(text_to_translate, model, tokenizer) st.success("Translation Completed!") st.text_area("Translated Text:", value=translated_text, height=300) else: st.error("Please enter text to translate.")