While trying to build a language translator, I have text_area which takes input and another text_area should show converted translated text. On click of Translate button, text_area should show converted code. Somehow this is not writing into translated_text
This is my code :
import streamlit as st
from deep_translator import GoogleTranslator
languages = GoogleTranslator().get_supported_languages(as_dict=True)
def translate_text(text, input_language, output_language):
try:
translator = GoogleTranslator(source=input_language, target=output_language)
output_text = translator.translate(text)
return output_text
except Exception as e:
st.error(f"Error during translation: {str(e)}")
return "Error" # Return a clear error message
st.set_page_config(page_title="Language Translator", page_icon=":globe_with_meridians:", layout="wide")
st.title("Language Translator")
col1, col2 = st.columns(2)
with col1:
input_language = st.selectbox("Input Language:",
sorted(languages.keys()))
text_to_translate = st.text_area("Enter Text to Translate",
height=200)
with col2:
output_language = st.selectbox("Output Language:",
sorted(languages.keys()))
translated_text = st.text_area("Translated Text (English)", "",
key="translated_text", height=200)
if st.button("Translate"):
try:
output_text = translate_text(text_to_translate,
input_language,
output_language)
# Update translated_text using session state
st.session_state.translated_text = output_text
except Exception as e:
st.error(f"Error")