Krishna086 commited on
Commit
ff5aa1c
·
verified ·
1 Parent(s): 0611db1

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +37 -28
app.py CHANGED
@@ -5,38 +5,47 @@ from io import BytesIO
5
  st.set_page_config(page_title="Multilingual Translator", page_icon="🌐", layout="centered")
6
 
7
  # Import LANGUAGES from translation.py
8
- from translation import LANGUAGES
 
 
 
 
9
 
10
  def main():
11
- translation = importlib.import_module("translation")
12
- lang_detect = importlib.import_module("lang_detect")
13
- audio_processor = importlib.import_module("audio_processor")
 
14
 
15
- # Header
16
- st.markdown("<h1 style='text-align: center; color: #4285F4;'>Multilingual Translator</h1>", unsafe_allow_html=True)
17
 
18
- # Language and Input/Output Layout
19
- col1, col2 = st.columns(2)
20
- with col1:
21
- detected_options = lang_detect.detect_language(st.session_state.get("input_text", "")) if st.session_state.get("input_text", "").strip() and len(st.session_state.get("input_text", "").strip()) >= 10 else [("English", 1.0, "English")]
22
- source_lang = detected_options[0][0] if detected_options else "English"
23
- source_lang_code = next((k for k, v in LANGUAGES.items() if v[1] == source_lang), "en")
24
- source_lang_display = st.selectbox("Source", options=[LANGUAGES[source_lang_code][0]] + [v[0] for v in LANGUAGES.values()], index=0, key="source_lang")
25
- input_type = st.radio("Input", ["Text", "File"], horizontal=True, key="input_type")
26
- if input_type == "Text":
27
- input_text = st.text_area("", height=200, key="input_text", on_change=trigger_translation, args=(translation, lang_detect, audio_processor,))
28
- else:
29
- input_text = st.file_uploader("", type=["txt", "docx", "pdf"], key="file_input", on_change=trigger_translation, args=(translation, lang_detect, audio_processor,))
30
- if input_text:
31
- st.session_state.input_text = input_text.read().decode("utf-8").strip()
32
- st.button("Translate", key="translate_btn", on_click=trigger_translation, args=(translation, lang_detect, audio_processor,))
33
- with col2:
34
- target_lang_display = st.selectbox("Target", options=[v[0] for v in LANGUAGES.values()], index=list(LANGUAGES.values()).index(LANGUAGES["hi"]), key="target_lang")
35
- target_lang = next((k for k, v in LANGUAGES.items() if v[0] == target_lang_display), "hi")
36
- if "translated_text" in st.session_state:
37
- st.text_area("", value=st.session_state.translated_text, height=200, key="output_text", disabled=True)
38
- if st.button("", key="audio_btn", on_click=play_audio, args=(audio_processor,), help="Play audio"):
39
- pass # Handled by play_audio
 
 
 
 
40
 
41
  def trigger_translation(translation, lang_detect, audio_processor):
42
  text = st.session_state.input_text.strip()
 
5
  st.set_page_config(page_title="Multilingual Translator", page_icon="🌐", layout="centered")
6
 
7
  # Import LANGUAGES from translation.py
8
+ try:
9
+ from translation import LANGUAGES
10
+ except ImportError as e:
11
+ st.error(f"Failed to import translation module: {e}")
12
+ st.stop()
13
 
14
  def main():
15
+ try:
16
+ translation = importlib.import_module("translation")
17
+ lang_detect = importlib.import_module("lang_detect")
18
+ audio_processor = importlib.import_module("audio_processor")
19
 
20
+ # Header
21
+ st.markdown("<h1 style='text-align: center; color: #4285F4;'>Multilingual Translator</h1>", unsafe_allow_html=True)
22
 
23
+ # Language and Input/Output Layout
24
+ col1, col2 = st.columns(2)
25
+ with col1:
26
+ detected_options = lang_detect.detect_language(st.session_state.get("input_text", "")) if st.session_state.get("input_text", "").strip() and len(st.session_state.get("input_text", "").strip()) >= 10 else [("English", 1.0, "English")]
27
+ source_lang = detected_options[0][0] if detected_options else "English"
28
+ source_lang_code = next((k for k, v in LANGUAGES.items() if v[1] == source_lang), "en")
29
+ source_lang_display = st.selectbox("Source", options=[LANGUAGES[source_lang_code][0]] + [v[0] for v in LANGUAGES.values()], index=0, key="source_lang")
30
+ input_type = st.radio("Input", ["Text", "File"], horizontal=True, key="input_type")
31
+ if input_type == "Text":
32
+ input_text = st.text_area("", height=200, key="input_text", on_change=trigger_translation, args=(translation, lang_detect, audio_processor,))
33
+ else:
34
+ input_text = st.file_uploader("", type=["txt", "docx", "pdf"], key="file_input", on_change=trigger_translation, args=(translation, lang_detect, audio_processor,))
35
+ if input_text:
36
+ st.session_state.input_text = input_text.read().decode("utf-8").strip()
37
+ st.button("Translate", key="translate_btn", on_click=trigger_translation, args=(translation, lang_detect, audio_processor,))
38
+ with col2:
39
+ target_lang_display = st.selectbox("Target", options=[v[0] for v in LANGUAGES.values()], index=list(LANGUAGES.values()).index(LANGUAGES["hi"]), key="target_lang")
40
+ target_lang = next((k for k, v in LANGUAGES.items() if v[0] == target_lang_display), "hi")
41
+ if "translated_text" in st.session_state:
42
+ st.text_area("", value=st.session_state.translated_text, height=200, key="output_text", disabled=True)
43
+ if st.button("", key="audio_btn", on_click=play_audio, args=(audio_processor,), help="Play audio"):
44
+ pass # Handled by play_audio
45
+
46
+ except Exception as e:
47
+ st.error(f"App error: {e}")
48
+ st.stop()
49
 
50
  def trigger_translation(translation, lang_detect, audio_processor):
51
  text = st.session_state.input_text.strip()