import streamlit as st from transformers import MarianMTModel, MarianTokenizer # Define available target languages and their Hugging Face model names language_options = { "French": "Helsinki-NLP/opus-mt-en-fr", "German": "Helsinki-NLP/opus-mt-en-de", "Spanish": "Helsinki-NLP/opus-mt-en-es", "Italian": "Helsinki-NLP/opus-mt-en-it", "Dutch": "Helsinki-NLP/opus-mt-en-nl", "Urdu": "Helsinki-NLP/opus-mt-en-ur", "Punjabi": "Helsinki-NLP/opus-mt-en-pa", # Punjabi language model "Pashto": "Helsinki-NLP/opus-mt-en-ps", # Pashto language model } # Function to load the model based on the selected language @st.cache_resource def load_model(model_name): model = MarianMTModel.from_pretrained(model_name) tokenizer = MarianTokenizer.from_pretrained(model_name) return model, tokenizer # Function to translate text def translate_text(model, tokenizer, text): inputs = tokenizer.encode(text, return_tensors='pt', truncation=True, padding=True) translated = model.generate(inputs, max_length=512, num_beams=5, early_stopping=True) translated_text = tokenizer.decode(translated[0], skip_special_tokens=True) return translated_text # Streamlit app layout with dark gradient colors st.markdown(""" """, unsafe_allow_html=True) # App title and subtitle with dark gradient st.markdown("
Empowering You to Speak Any Language!
", unsafe_allow_html=True) # Sidebar for language selection and instructions st.sidebar.title("Language Options") language = st.sidebar.selectbox("Choose target language", list(language_options.keys())) st.sidebar.markdown("### How to use") st.sidebar.write("1. Enter English text in the box below.") st.sidebar.write("2. Select the target language from the options.") st.sidebar.write("3. Click **Translate** to get the result.") # Input text st.markdown("Character count: {len(text)}
", unsafe_allow_html=True) # Button to translate if st.button("Translate"): if text: # Show a spinner during the translation process with st.spinner('Translating...'): # Load model and tokenizer based on selected language model_name = language_options[language] model, tokenizer = load_model(model_name) # Perform translation translated_text = translate_text(model, tokenizer, text) # Display the translation st.markdown(f"