| import streamlit as st |
| from transformers import MarianMTModel, MarianTokenizer |
|
|
| |
| @st.cache_resource |
| def load_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 model, tokenizer |
|
|
| def translate_text(text, model, tokenizer): |
| inputs = tokenizer.encode(text, return_tensors="pt", truncation=True) |
| outputs = model.generate(inputs, max_length=512, num_beams=5, early_stopping=True) |
| translated_text = tokenizer.decode(outputs[0], skip_special_tokens=True) |
| return translated_text |
|
|
| |
| st.title("Multi-Language Translator") |
|
|
| st.sidebar.header("Translation Settings") |
|
|
| |
| language_options = { |
| "English": "en", |
| "Urdu": "ur", |
| "German": "de", |
| "French": "fr", |
| "Spanish": "es", |
| "Italian": "it", |
| } |
|
|
| src_lang = st.sidebar.selectbox("Select Source Language", list(language_options.keys())) |
| tgt_lang = st.sidebar.selectbox("Select Target Language", list(language_options.keys())) |
|
|
| |
| src_lang_code = language_options[src_lang] |
| tgt_lang_code = language_options[tgt_lang] |
|
|
| |
| text_to_translate = st.text_area("Enter text to translate:") |
|
|
| |
| if st.button("Translate"): |
| if not text_to_translate.strip(): |
| st.error("Please enter some text to translate.") |
| elif src_lang_code == tgt_lang_code: |
| st.error("Source and target languages must be different.") |
| else: |
| try: |
| with st.spinner("Translating..."): |
| |
| model, tokenizer = load_model(src_lang_code, tgt_lang_code) |
| |
| translated_text = translate_text(text_to_translate, model, tokenizer) |
| st.markdown(f"### Translated Text:\n{translated_text}") |
| except Exception as e: |
| st.error(f"Error during translation: {str(e)}") |
|
|