kasper-boy's picture
Update app.py
707432b verified
import streamlit as st
import torch
import json
from transformers import pipeline
from PIL import Image
# Initialize the translation pipeline
text_translator = pipeline("translation", model="facebook/nllb-200-distilled-600M", torch_dtype=torch.bfloat16)
# Load the JSON data from the file
with open('language.json', 'r') as file:
language_data = json.load(file)
# Extract language names from the JSON data
language_names = [entry['Language'] for entry in language_data]
def get_FLORES_code_from_language(language):
for entry in language_data:
if entry['Language'].lower() == language.lower():
return entry['FLORES-200 code']
return None
def translate_text(text, destination_language):
dest_code = get_FLORES_code_from_language(destination_language)
if dest_code:
translation = text_translator(text, src_lang="eng_Latn", tgt_lang=dest_code)
return translation[0]["translation_text"]
else:
return "Destination language code not found."
# Custom CSS for styling
st.markdown("""
<style>
.main {
background-color: #f0f2f6;
color: #4f4f4f;
}
.title {
font-family: 'Arial', sans-serif;
color: #336699;
font-size: 32px;
}
.description {
font-family: 'Arial', sans-serif;
color: #4f4f4f;
font-size: 18px;
}
.footer {
font-family: 'Arial', sans-serif;
color: #999999;
font-size: 12px;
text-align: center;
}
.textbox {
font-family: 'Courier New', monospace;
color: #333333;
background-color: #ffffff;
padding: 10px;
border: 1px solid #ccc;
border-radius: 5px;
width: 100%;
height: 150px;
}
</style>
""", unsafe_allow_html=True)
# App layout
st.markdown('<div class="title">🌐 Multi-language Translator</div>', unsafe_allow_html=True)
st.markdown('<div class="description">This application translates any English text to multiple languages with ease and efficiency.</div>', unsafe_allow_html=True)
# Display a header image
image = Image.open('translator.png')
st.image(image, use_column_width=True)
# Create a sidebar for navigation
st.sidebar.header("Translation Settings")
text_to_translate = st.sidebar.text_area("Input text to translate", height=150, key="input_text")
destination_language = st.sidebar.selectbox("Select Destination Language", language_names, key="language_select")
# Translate button
if st.sidebar.button("Translate", key="translate_button"):
if text_to_translate:
translated_text = translate_text(text_to_translate, destination_language)
st.markdown("### Translated text")
st.markdown(f'<div class="textbox">{translated_text}</div>', unsafe_allow_html=True)
else:
st.warning("Please enter text to translate")
# Footer
st.markdown('<div class="footer">Developed with ❤️ using Streamlit</div>', unsafe_allow_html=True)
# Instructions or any additional information
st.sidebar.write("Instructions")
st.sidebar.write("1. Enter the text you want to translate in the input box.")
st.sidebar.write("2. Select the desired language from the dropdown menu.")
st.sidebar.write("3. Click 'Translate' to get the translation.")