File size: 2,086 Bytes
ad45495
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
# File: language_translation_app.py

import streamlit as st
from transformers import MarianMTModel, MarianTokenizer

# Function to load the model and tokenizer
@st.cache_resource
def load_model_and_tokenizer(model_name):
    tokenizer = MarianTokenizer.from_pretrained(model_name)
    model = MarianMTModel.from_pretrained(model_name)
    return tokenizer, model

# Function to perform translation
def translate_text(input_text, src_lang, tgt_lang):
    model_name = f"Helsinki-NLP/opus-mt-{src_lang}-{tgt_lang}"
    try:
        tokenizer, model = load_model_and_tokenizer(model_name)
        inputs = tokenizer(input_text, return_tensors="pt", padding=True)
        outputs = model.generate(**inputs)
        translated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
        return translated_text
    except Exception as e:
        return f"Error: Unable to translate. Details: {e}"

# Language options supported by Helsinki-NLP
language_pairs = {
    "English": "en",
    "French": "fr",
    "German": "de",
    "Spanish": "es",
    "Chinese": "zh",
    "Hindi": "hi",
    "Urdu": "ur",
    "Arabic": "ar",
    "Russian": "ru",
    "Italian": "it",
    # Add more as required
}

# Streamlit App
def main():
    st.title("Language Translation App")
    st.write("Translate text between multiple languages instantly.")

    # Input and Output language selection
    input_language = st.selectbox("Select Input Language", language_pairs.keys())
    output_language = st.selectbox("Select Output Language", language_pairs.keys())

    # User input for the text
    input_text = st.text_area("Enter text to translate", height=200)

    if st.button("Translate"):
        if input_text.strip():
            src_lang = language_pairs[input_language]
            tgt_lang = language_pairs[output_language]
            translated_text = translate_text(input_text, src_lang, tgt_lang)
            st.subheader("Translated Text")
            st.write(translated_text)
        else:
            st.warning("Please enter text to translate.")

if __name__ == "__main__":
    main()