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