# File: language_translation_app.py import streamlit as st from transformers import MarianMTModel, MarianTokenizer # Function to load the model and tokenizer @st.cache_resource 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()