Translation / app.py
JaganathC's picture
Update app.py
1ed98cd verified
raw
history blame
2.4 kB
import streamlit as st
from deep_translator import GoogleTranslator
import json
# Fetch supported languages dynamically
SUPPORTED_LANGUAGES = GoogleTranslator().get_supported_languages()
# Default languages (including Greek 'el')
DEFAULT_LANGUAGES = ["fr", "es", "de", "hi", "el"] # French, Spanish, German, Hindi, Greek
DEFAULT_LANGUAGES = [lang for lang in DEFAULT_LANGUAGES if lang in SUPPORTED_LANGUAGES]
st.title("🌍 Multi-Language Translator")
# Language selection
target_languages = st.multiselect("🎯 Select target languages", SUPPORTED_LANGUAGES, default=DEFAULT_LANGUAGES)
# Input type selection
input_type = st.radio("πŸ“Œ Choose input method", ["Text", "TXT File", "JSON File"])
def translate_text(text, languages):
"""Translate text into multiple languages"""
translations = {}
for lang in languages:
translations[lang] = GoogleTranslator(source='auto', target=lang).translate(text)
return translations
def translate_json(data, languages):
"""Translate JSON while keeping keys intact"""
translated_json = {}
for key, value in data.items():
if isinstance(value, dict):
translated_json[key] = translate_json(value, languages)
else:
translated_json[key] = translate_text(value, languages)
return translated_json
if input_type == "Text":
user_text = st.text_area("✏️ Enter text to translate:")
if st.button("Translate"):
if user_text.strip():
result = translate_text(user_text, target_languages)
st.json(result)
else:
st.warning("Please enter text to translate.")
elif input_type == "TXT File":
uploaded_file = st.file_uploader("πŸ“„ Upload a TXT file", type=["txt"])
if uploaded_file and st.button("Translate"):
content = uploaded_file.read().decode("utf-8")
result = translate_text(content, target_languages)
st.json(result)
elif input_type == "JSON File":
uploaded_json = st.file_uploader("πŸ“‚ Upload a JSON file", type=["json"])
if uploaded_json and st.button("Translate"):
content = json.load(uploaded_json)
result = translate_json(content, target_languages)
st.json(result)
st.download_button("⬇️ Download Translated JSON", json.dumps(result, indent=4), "translated.json", "application/json")
st.markdown("πŸš€ **Supports over 100 languages!**")