Spaces:
Sleeping
Sleeping
| """Tagba Translator""" | |
| import streamlit as st | |
| import requests | |
| api_url = "https://31d7-196-13-207-151.ngrok-free.app/" | |
| if 'source_lang' not in st.session_state: | |
| st.session_state.source_lang = 'Français' | |
| if 'target_lang' not in st.session_state: | |
| st.session_state.target_lang = 'Tagba' | |
| st.markdown( | |
| """ | |
| <style> | |
| .stApp { | |
| background-color: #003366; | |
| margin: 0; | |
| padding: 0; | |
| display: flex; | |
| justify-content: center; | |
| align-items: center; | |
| height: 100vh; | |
| } | |
| .col-container { | |
| font-weight: bold; | |
| font-size: 25px; | |
| font-family: calibri(corps); | |
| color: antiquewhite; | |
| border: 2px solid antiquewhite; | |
| border-radius: 50px; | |
| display: inline-flex; | |
| justify-content: center; | |
| text-align: center; | |
| padding: 2px 4px; | |
| margin-top: 30px; | |
| margin-left: 90px; | |
| } | |
| .stColumns > div { | |
| border: 2px solid #000; | |
| } | |
| .title { | |
| text-align: center; | |
| font-size: 48px; | |
| font-weight: bold; | |
| margin-bottom: 10px; | |
| font-family: 'Brush Script MT', cursive; | |
| font-weight: bold; | |
| color: #FFFFFF; | |
| text-align: center; | |
| letter-spacing: 1px; | |
| position: relative; | |
| } | |
| .title::after { | |
| content: ""; | |
| position: absolute; | |
| bottom: -5px; | |
| left: 10%; | |
| width: 80%; | |
| height: 2px; | |
| background-color: #FFFFFF; | |
| } | |
| .footer { | |
| color: antiquewhite; | |
| } | |
| .block-container { | |
| background: rgba(255, 255, 255, 0.3); | |
| min-width: 500px; | |
| min-height: 600px; | |
| padding: 30px; | |
| box-sizing: border-box; | |
| border-radius: 10px; | |
| box-shadow: 3px 6px 40px rgba(0, 0, 0, 0.1); | |
| display: flex; | |
| flex-direction: column; | |
| justify-content: flex-start; | |
| align-items: center; | |
| heigh: 100%; | |
| position: absolute; | |
| } | |
| .stButton>button { | |
| display: block; | |
| margin:: 0 auto; | |
| position: absolute; | |
| margin-top: 20px; | |
| } | |
| </style> | |
| """, | |
| unsafe_allow_html=True | |
| ) | |
| st.markdown('<h1 class="title">Tagba Translator</h1>', unsafe_allow_html=True) | |
| col1, col_swap, col2 = st.columns([1, 0.05, 1], gap="small") | |
| if "text_to_translate" not in st.session_state: | |
| st.session_state.text_to_translate = "" | |
| if "translation" not in st.session_state: | |
| st.session_state.translation = "" | |
| with col_swap: | |
| st.write("") | |
| swap = st.button("⇄") | |
| if swap: | |
| st.session_state.source_lang, st.session_state.target_lang = st.session_state.target_lang, st.session_state.source_lang | |
| st.session_state.text_to_translate, st.session_state.translation = st.session_state.translation, st.session_state.text_to_translate | |
| with col1: | |
| st.markdown('<h3 class="col-container">'+st.session_state.source_lang+'</h3>', unsafe_allow_html=True) | |
| st.session_state.text_to_translate = st.text_area( | |
| label=" ", | |
| value=st.session_state.text_to_translate, | |
| height=200, | |
| placeholder="Entrez un texte ici" | |
| ) | |
| st.markdown('</div>', unsafe_allow_html=True) | |
| if st.button("Traduire"): | |
| if st.session_state.text_to_translate: | |
| try: | |
| response = requests.post('https://17a8-102-180-109-59.ngrok-free.app/translate/', json={"text": st.session_state.text_to_translate, "lang": st.session_state.target_lang}, timeout=600) | |
| if response.status_code == 200: | |
| translation = response.json()["translation"] # st.session_state.text_to_translate = " " | |
| st.session_state.translation = translation | |
| else: | |
| st.error("Erreur lors de la traduction.") | |
| response.raise_for_status() | |
| except requests.exceptions.RequestException as e: | |
| st.error("Erreur lors de la traduction.") | |
| print(e) | |
| else: | |
| st.warning("Veuillez entrer du texte à traduire.") | |
| with col2: | |
| st.markdown('<h3 class="col-container style="margin-top: 10px; margin-bottom: 10px;">'+st.session_state.target_lang+'</h3>', unsafe_allow_html=True) | |
| st.text_area( | |
| label=" ", | |
| value=st.session_state.translation, | |
| height=200 | |
| ) | |
| st.markdown('</div>', unsafe_allow_html=True) | |