Spaces:
Build error
Build error
| import streamlit as st | |
| from transformers import MarianMTModel, MarianTokenizer | |
| # Define supported language pairs (source-target) | |
| LANGUAGES = { | |
| "en": "English", | |
| "fr": "French", | |
| "de": "German", | |
| "es": "Spanish", | |
| "it": "Italian", | |
| "pt": "Portuguese", | |
| "ru": "Russian", | |
| "zh": "Chinese", | |
| } | |
| def get_model_and_tokenizer(src_lang: str, tgt_lang: str): | |
| model_name = f"Helsinki-NLP/opus-mt-{src_lang}-{tgt_lang}" | |
| model = MarianMTModel.from_pretrained(model_name) | |
| tokenizer = MarianTokenizer.from_pretrained(model_name) | |
| return model, tokenizer | |
| def translate_text(text: str, source_lang: str, target_lang: str): | |
| model, tokenizer = get_model_and_tokenizer(source_lang, target_lang) | |
| translated = model.generate(**tokenizer(text, return_tensors="pt", padding=True)) | |
| translated_text = tokenizer.decode(translated[0], skip_special_tokens=True) | |
| return translated_text | |
| # Streamlit app | |
| st.title("Text Translation App") | |
| st.write("Translate text from one language to another using a Hugging Face model.") | |
| source_lang = st.selectbox("Select the source language", list(LANGUAGES.keys()), format_func=lambda x: LANGUAGES[x]) | |
| target_lang = st.selectbox("Select the target language", list(LANGUAGES.keys()), format_func=lambda x: LANGUAGES[x]) | |
| text = st.text_area("Enter the text you want to translate") | |
| if st.button("Translate"): | |
| if source_lang == target_lang: | |
| st.warning("Source and target languages are the same. Please select different languages.") | |
| else: | |
| translated_text = translate_text(text, source_lang, target_lang) | |
| st.write("**Translated Text:**") | |
| st.write(translated_text) | |