Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| from transformers import MarianMTModel, MarianTokenizer | |
| # Define a dictionary to map language names to model identifiers | |
| models = { | |
| 'French': 'Helsinki-NLP/opus-mt-en-fr', | |
| 'Spanish': 'Helsinki-NLP/opus-mt-en-es', | |
| 'German': 'Helsinki-NLP/opus-mt-en-de', | |
| 'Italian': 'Helsinki-NLP/opus-mt-en-it', | |
| 'Urdu': 'Helsinki-NLP/opus-mt-en-ur', | |
| 'Arabic': 'Helsinki-NLP/opus-mt-en-ar', | |
| # Add more language models if needed | |
| } | |
| def load_model(model_name): | |
| """Load the model and tokenizer based on the selected model name.""" | |
| model = MarianMTModel.from_pretrained(model_name) | |
| tokenizer = MarianTokenizer.from_pretrained(model_name) | |
| return model, tokenizer | |
| def translate_text(text, model, tokenizer): | |
| """Translate text using the provided model and tokenizer.""" | |
| inputs = tokenizer.encode(text, return_tensors="pt") | |
| translated = model.generate(inputs) | |
| translated_text = tokenizer.decode(translated[0], skip_special_tokens=True) | |
| return translated_text | |
| def main(): | |
| st.title("Multilingual Translator") | |
| # User input for English text | |
| text_to_translate = st.text_area("Enter text in English:") | |
| # Language options | |
| selected_language = st.selectbox("Select target language:", list(models.keys())) | |
| if st.button("Translate"): | |
| if text_to_translate: | |
| # Load the selected model | |
| model_name = models[selected_language] | |
| model, tokenizer = load_model(model_name) | |
| translated_text = translate_text(text_to_translate, model, tokenizer) | |
| st.write(f"**Translation in {selected_language}:**") | |
| st.write(translated_text) | |
| else: | |
| st.warning("Please enter text to translate.") | |
| if __name__ == "__main__": | |
| main() | |