Spaces:
Sleeping
Sleeping
| # Install necessary libraries first: | |
| # pip install streamlit transformers | |
| import streamlit as st | |
| from transformers import MarianMTModel, MarianTokenizer | |
| # Function to load model and tokenizer | |
| def load_translation_model(src_lang, tgt_lang): | |
| model_name = f"Helsinki-NLP/opus-mt-{src_lang}-{tgt_lang}" | |
| tokenizer = MarianTokenizer.from_pretrained(model_name) | |
| model = MarianMTModel.from_pretrained(model_name) | |
| return tokenizer, model | |
| # Function to translate text | |
| def translate_text(text, tokenizer, model): | |
| tokens = tokenizer(text, return_tensors="pt", padding=True, truncation=True) | |
| translated = model.generate(**tokens) | |
| translated_text = tokenizer.decode(translated[0], skip_special_tokens=True) | |
| return translated_text | |
| # List of supported language codes | |
| languages = { | |
| "English": "en", | |
| "French": "fr", | |
| "Spanish": "es", | |
| "German": "de", | |
| "Italian": "it", | |
| "Dutch": "nl", | |
| "Chinese (Simplified)": "zh", | |
| "Russian": "ru", | |
| "Arabic": "ar", | |
| "Hindi": "hi", | |
| } | |
| # Streamlit UI | |
| st.title("Language Translation App") | |
| st.write("Translate text between multiple languages using an open-source translation model.") | |
| # Language selection | |
| source_language = st.selectbox("Select source language", list(languages.keys()), index=0) | |
| target_language = st.selectbox("Select target language", list(languages.keys()), index=1) | |
| # Input text | |
| input_text = st.text_area("Enter text to translate", height=150) | |
| # Load model and tokenizer | |
| if source_language != target_language and input_text.strip(): | |
| src_lang_code = languages[source_language] | |
| tgt_lang_code = languages[target_language] | |
| try: | |
| tokenizer, model = load_translation_model(src_lang_code, tgt_lang_code) | |
| translated_text = translate_text(input_text, tokenizer, model) | |
| st.subheader("Translated Text") | |
| st.success(translated_text) | |
| except Exception as e: | |
| st.error(f"Error: {e}") | |
| else: | |
| st.info("Please select different source and target languages and enter text to translate.") | |