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!**")