import streamlit as st from transformers import MarianMTModel, MarianTokenizer st.set_page_config(page_title="English ↔ Urdu Translator", layout="centered") st.title("📘 English ↔ اردو Translator") # Language options direction = st.selectbox("Select Translation Direction", ["English to Urdu", "Urdu to English"]) # Input text text = st.text_area("Enter Text") # Load models and tokenizers only once using caching @st.cache_resource def load_model_and_tokenizer(src_lang): if src_lang == "en": model_name = "Helsinki-NLP/opus-mt-en-ur" else: model_name = "Helsinki-NLP/opus-mt-ur-en" tokenizer = MarianTokenizer.from_pretrained(model_name) model = MarianMTModel.from_pretrained(model_name) return tokenizer, model # Translate if st.button("Translate"): if not text.strip(): st.warning("Please enter some text.") else: src_lang = "en" if direction == "English to Urdu" else "ur" tokenizer, model = load_model_and_tokenizer(src_lang) inputs = tokenizer(text, return_tensors="pt", truncation=True, padding=True) translated = model.generate(**inputs) result = tokenizer.decode(translated[0], skip_special_tokens=True) st.success("Translation:") st.write(result)