File size: 1,975 Bytes
9b41d6c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import streamlit as st
from transformers import MarianMTModel, MarianTokenizer, pipeline

# Set page configuration
st.set_page_config(page_title="Language Translation App", layout="centered")

# Title of the app
st.title("🌍 Language Translation App")
st.markdown("""
**Purpose**: Translate text between multiple languages  
**Use Case**: Help users who want to learn or speak different languages or communicate with others in their preferred language.
""")

# Language mapping to language codes
language_mapping = {
    "English": "en",
    "French": "fr",
    "German": "de",
    "Hindi": "hi",
    "Spanish": "es",
    "Italian": "it",
}

# Language pair selection
source_lang = st.selectbox("Select Source Language", list(language_mapping.keys()))
target_lang = st.selectbox("Select Target Language", list(language_mapping.keys()))

# Correctly construct the model name for Hugging Face
model_name = f"Helsinki-NLP/opus-mt-{language_mapping[source_lang]}-{language_mapping[target_lang]}"

# Function to load the translation model
@st.cache_resource
def load_pipeline(model_name):
    try:
        model = MarianMTModel.from_pretrained(model_name)
        tokenizer = MarianTokenizer.from_pretrained(model_name)
        return pipeline("translation", model=model, tokenizer=tokenizer)
    except Exception as e:
        st.error(f"Error loading model: {e}")
        return None

# Initialize the translator
translator = load_pipeline(model_name)

# Text input field for translation
text_input = st.text_area("Enter text to translate", height=150)

# Translate and display result
if st.button("Translate"):
    if text_input.strip():
        with st.spinner("Translating..."):
            result = translator(text_input)
            translated_text = result[0]['translation_text']
            st.success("Translation complete!")
            st.text_area("Translated Text", translated_text, height=150)
    else:
        st.warning("Please enter some text to translate.")