|
import streamlit as st |
|
from transformers import MarianMTModel, MarianTokenizer |
|
|
|
|
|
st.title("π Universal Language Translator App") |
|
st.write(""" |
|
Translate text from any language to any other language using an open-source multilingual model. |
|
This app supports many languages and ensures a user-friendly experience. |
|
""") |
|
|
|
|
|
st.sidebar.header("π Instructions") |
|
st.sidebar.write(""" |
|
1. Enter the text you want to translate in the input box. |
|
2. Select the source language of the input text. |
|
3. Choose the target language for translation. |
|
4. Click the "Translate" button to see the translated text. |
|
""") |
|
|
|
|
|
languages = { |
|
"English": "en", |
|
"Spanish": "es", |
|
"French": "fr", |
|
"German": "de", |
|
"Chinese": "zh", |
|
"Hindi": "hi", |
|
"Arabic": "ar", |
|
"Russian": "ru", |
|
"Italian": "it", |
|
"Portuguese": "pt", |
|
"Japanese": "ja", |
|
"Korean": "ko", |
|
"Dutch": "nl", |
|
"Bengali": "bn", |
|
"Turkish": "tr", |
|
"Urdu": "ur", |
|
"Greek": "el", |
|
"Polish": "pl", |
|
"Thai": "th", |
|
"Vietnamese": "vi", |
|
"Hebrew": "he", |
|
"Swahili": "sw", |
|
"Amharic": "am", |
|
"Tamil": "ta", |
|
"Telugu": "te", |
|
"Punjabi": "pa", |
|
"Malayalam": "ml", |
|
} |
|
|
|
|
|
source_text = st.text_area("Enter text to translate:", height=150, placeholder="Type here...") |
|
source_language = st.selectbox("Source Language:", options=list(languages.keys()), index=0) |
|
target_language = st.selectbox("Target Language:", options=list(languages.keys()), index=1) |
|
|
|
if st.button("Translate"): |
|
if source_text.strip() == "": |
|
st.error("Please enter some text to translate.") |
|
else: |
|
try: |
|
|
|
model_name = f"Helsinki-NLP/opus-mt-{languages[source_language]}-{languages[target_language]}" |
|
|
|
|
|
tokenizer = MarianTokenizer.from_pretrained(model_name) |
|
model = MarianMTModel.from_pretrained(model_name) |
|
|
|
|
|
inputs = tokenizer(source_text, return_tensors="pt", padding=True, truncation=True) |
|
translated_tokens = model.generate(**inputs) |
|
translated_text = tokenizer.decode(translated_tokens[0], skip_special_tokens=True) |
|
|
|
|
|
st.subheader("π Translated Text:") |
|
st.text_area("Translation Output:", value=translated_text, height=150) |
|
except Exception as e: |
|
st.error("Translation failed. Please ensure the selected languages are supported.") |
|
st.error(str(e)) |
|
|
|
|
|
st.write("---") |
|
st.markdown("π‘ **Developed by Abdullah**") |
|
|