Spaces:
Running
Running
File size: 2,398 Bytes
fcd7b4d c3765b2 1ed98cd fcd7b4d 1ed98cd c3765b2 fcd7b4d 1ed98cd c3765b2 1ed98cd c3765b2 1ed98cd fcd7b4d 1ed98cd c3765b2 1ed98cd c3765b2 1ed98cd fcd7b4d 1ed98cd c3765b2 1ed98cd fcd7b4d 1ed98cd fcd7b4d 1ed98cd c3765b2 1ed98cd fcd7b4d 1ed98cd |
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 |
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!**")
|