-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.py
More file actions
80 lines (67 loc) · 2.52 KB
/
Copy pathapp.py
File metadata and controls
80 lines (67 loc) · 2.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import streamlit as st
from googletrans import Translator
from gtts import gTTS
import tempfile
import streamlit.components.v1 as components
# Language codes dictionary
language = {
"english": "en",
"spanish": "es",
"french": "fr",
"german": "de",
"italian": "it",
"arabic": "ar",
"chinese": "zh",
"japanese": "ja",
"russian": "ru",
"portuguese": "pt"
}
translator = Translator()
st.set_page_config(page_title="Language Translation Tool", page_icon="🌐", layout="centered")
st.title("🌐 Language Translation Tool")
st.write("Translate text between multiple languages instantly.")
text = st.text_area("Enter text to translate:")
# Detect language only if there's text
detected_lang_code = ""
detected_lang_name = ""
if text.strip():
detected_lang_code = translator.detect(text).lang
detected_lang_name = next((lang for lang, code in language.items() if code == detected_lang_code), "Unknown")
st.info(f"Detected source language: **{detected_lang_name}** ({detected_lang_code})")
target_lang = st.selectbox("Select target language:", list(language.keys()))
# Store translation result in session state
if "translated_text" not in st.session_state:
st.session_state.translated_text = ""
if st.button("Translate"):
if not text.strip():
st.warning("Please enter some text to translate.")
else:
try:
translated = translator.translate(
text,
src=detected_lang_code,
dest=language[target_lang]
)
st.session_state.translated_text = translated.text
st.success(f"**Translated Text:** {translated.text}")
except Exception as e:
st.error(f"Translation failed: {e}")
# Text-to-speech button (independent)
if st.button("Convert to Speech"):
if not st.session_state.translated_text:
st.warning("Please translate text first.")
else:
try:
tts = gTTS(text=st.session_state.translated_text, lang=language[target_lang])
with tempfile.NamedTemporaryFile(delete=False, suffix=".mp3") as tmp_file:
tts.save(tmp_file.name)
st.audio(tmp_file.name, format="audio/mp3")
st.success("Text-to-speech conversion successful!")
except Exception as e:
st.error(f"Text-to-speech conversion failed: {e}")
# Show supported languages
st.write("### Supported Languages:")
for lang in language.keys():
st.write(f" - {lang}")
st.write("---")
st.caption("Built for CodeAlpha AI Internship 🚀")