File size: 2,826 Bytes
bf8d8c7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3c7757d
 
 
bf8d8c7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bacc136
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# Import necessary libraries
import streamlit as st
from transformers import MarianMTModel, MarianTokenizer
import torch

# Function to load the tokenizer and model for a given pair of languages
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 tokenizer, model

# Function to translate text
def translate_text(tokenizer, model, text):
    inputs = tokenizer(text, return_tensors="pt", padding=True, truncation=True, max_length=512)
    with torch.no_grad():
        translated = model.generate(**inputs)
    result = tokenizer.decode(translated[0], skip_special_tokens=True)
    return result

# Streamlit UI
st.title("\U0001F310 Multilingual Translation App")
st.write("Translate text between multiple languages using open-source models!")

# Extended Language options
language_pairs = {
    "English to French": ("en", "fr"),
    "French to English": ("fr", "en"),
    "English to Spanish": ("en", "es"),
    "Spanish to English": ("es", "en"),
    "English to German": ("en", "de"),
    "German to English": ("de", "en"),
    "English to Italian": ("en", "it"),
    "Italian to English": ("it", "en"),
    "English to Portuguese": ("en", "pt"),
    "Portuguese to English": ("pt", "en"),
    "English to Russian": ("en", "ru"),
    "Russian to English": ("ru", "en"),
    "English to Chinese": ("en", "zh"),
    "Chinese to English": ("zh", "en"),
    "English to Japanese": ("en", "ja"),
    "Japanese to English": ("ja", "en"),
    "English to Dutch": ("en", "nl"),
    "Dutch to English": ("nl", "en"),
    "English to Arabic": ("en", "ar"),
    "Arabic to English": ("ar", "en"),
    "English to Hindi": ("en", "hi"),
    "Hindi to English": ("hi", "en"),
    "English to Korean": ("en", "ko"),
    "Korean to English": ("ko", "en"),
    "English to Urdu": ("en", "ur"),
    "Urdu to English": ("ur", "en")
}

# Select the language pair
language_choice = st.selectbox("Select Language Pair", list(language_pairs.keys()))
src_lang, tgt_lang = language_pairs[language_choice]

# User input
text_input = st.text_area("Enter text to translate:")

# Translate button
if st.button("Translate"):
    if text_input:
        st.info("Translating... Please wait!")
        try:
            tokenizer, model = load_model(src_lang, tgt_lang)
            translated_text = translate_text(tokenizer, model, text_input)
            st.success("Translated Text:")
            st.write(translated_text)
        except Exception as e:
            st.error(f"Error: {e}. Please ensure the model exists for the selected pair.")
    else:
        st.warning("Please enter some text to translate.")

# Footer
st.markdown("---")
st.markdown("AYA Weekend Hackathon.")