JaganathC commited on
Commit
1ed98cd
Β·
verified Β·
1 Parent(s): 4f592b3

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +45 -58
app.py CHANGED
@@ -1,74 +1,61 @@
1
  import streamlit as st
2
- import json
3
  from deep_translator import GoogleTranslator
 
4
 
5
- # Fetch available translation languages
6
  SUPPORTED_LANGUAGES = GoogleTranslator().get_supported_languages()
7
 
8
- # Function to translate a single string
9
- def translate_text(text, target_langs):
10
- """Translates a single text string into multiple languages."""
11
- translators = {lang: GoogleTranslator(source="auto", target=lang) for lang in target_langs}
12
- return {lang: translators[lang].translate(text) for lang in target_langs}
13
-
14
- # Function to translate JSON values while keeping keys unchanged
15
- def translate_json(json_data, target_langs):
16
- """Translates JSON values into multiple languages while keeping keys unchanged."""
17
- translated_data = {lang: {} for lang in target_langs}
18
- translators = {lang: GoogleTranslator(source="auto", target=lang) for lang in target_langs}
19
-
20
- def translate_recursive(data):
21
- if isinstance(data, dict):
22
- return {key: translate_recursive(value) for key, value in data.items()}
23
- elif isinstance(data, list):
24
- return [translate_recursive(item) for item in data]
25
- elif isinstance(data, str):
26
- return {lang: translators[lang].translate(data) for lang in target_langs}
27
- else:
28
- return data # Keep numbers or boolean values unchanged
29
 
30
- for lang in target_langs:
31
- translated_data[lang] = translate_recursive(json_data)
32
 
33
- return translated_data
 
34
 
35
- # Streamlit UI
36
- st.title("🌍 Multi-Input Language Translator")
37
 
38
- # Select translation languages
39
- target_languages = st.multiselect("🎯 Select target languages", SUPPORTED_LANGUAGES, default=["fr", "es", "de", "hi"])
 
 
 
 
40
 
41
- # User input method selection
42
- option = st.radio("Choose input method:", ["Paste Text", "Upload TXT File", "Upload JSON File"])
 
 
 
 
 
 
 
43
 
44
- if option == "Paste Text":
45
- user_text = st.text_area("✍️ Enter text to translate:")
46
  if st.button("Translate"):
47
- if user_text:
48
- translated_text = translate_text(user_text, target_languages)
49
- st.subheader("πŸ“ Translated Text")
50
- st.json(translated_text)
 
51
 
52
- elif option == "Upload TXT File":
53
- uploaded_txt = st.file_uploader("πŸ“‚ Upload a TXT file", type=["txt"])
54
- if uploaded_txt:
55
- file_contents = uploaded_txt.read().decode("utf-8")
56
- translated_text = translate_text(file_contents, target_languages)
57
- st.subheader("πŸ“ Translated Text from File")
58
- st.json(translated_text)
59
 
60
- elif option == "Upload JSON File":
61
  uploaded_json = st.file_uploader("πŸ“‚ Upload a JSON file", type=["json"])
62
- if uploaded_json:
63
- json_data = json.load(uploaded_json)
64
- translated_json = translate_json(json_data, target_languages)
65
- st.subheader("πŸ“ Translated JSON")
66
- st.json(translated_json)
67
-
68
- # Save and provide download link
69
- translated_filename = "translated_output.json"
70
- with open(translated_filename, "w", encoding="utf-8") as f:
71
- json.dump(translated_json, f, indent=4, ensure_ascii=False)
72
 
73
- with open(translated_filename, "rb") as f:
74
- st.download_button("πŸ“₯ Download Translated JSON", f, file_name="translated_output.json", mime="application/json")
 
1
  import streamlit as st
 
2
  from deep_translator import GoogleTranslator
3
+ import json
4
 
5
+ # Fetch supported languages dynamically
6
  SUPPORTED_LANGUAGES = GoogleTranslator().get_supported_languages()
7
 
8
+ # Default languages (including Greek 'el')
9
+ DEFAULT_LANGUAGES = ["fr", "es", "de", "hi", "el"] # French, Spanish, German, Hindi, Greek
10
+ DEFAULT_LANGUAGES = [lang for lang in DEFAULT_LANGUAGES if lang in SUPPORTED_LANGUAGES]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
 
12
+ st.title("🌍 Multi-Language Translator")
 
13
 
14
+ # Language selection
15
+ target_languages = st.multiselect("🎯 Select target languages", SUPPORTED_LANGUAGES, default=DEFAULT_LANGUAGES)
16
 
17
+ # Input type selection
18
+ input_type = st.radio("πŸ“Œ Choose input method", ["Text", "TXT File", "JSON File"])
19
 
20
+ def translate_text(text, languages):
21
+ """Translate text into multiple languages"""
22
+ translations = {}
23
+ for lang in languages:
24
+ translations[lang] = GoogleTranslator(source='auto', target=lang).translate(text)
25
+ return translations
26
 
27
+ def translate_json(data, languages):
28
+ """Translate JSON while keeping keys intact"""
29
+ translated_json = {}
30
+ for key, value in data.items():
31
+ if isinstance(value, dict):
32
+ translated_json[key] = translate_json(value, languages)
33
+ else:
34
+ translated_json[key] = translate_text(value, languages)
35
+ return translated_json
36
 
37
+ if input_type == "Text":
38
+ user_text = st.text_area("✏️ Enter text to translate:")
39
  if st.button("Translate"):
40
+ if user_text.strip():
41
+ result = translate_text(user_text, target_languages)
42
+ st.json(result)
43
+ else:
44
+ st.warning("Please enter text to translate.")
45
 
46
+ elif input_type == "TXT File":
47
+ uploaded_file = st.file_uploader("πŸ“„ Upload a TXT file", type=["txt"])
48
+ if uploaded_file and st.button("Translate"):
49
+ content = uploaded_file.read().decode("utf-8")
50
+ result = translate_text(content, target_languages)
51
+ st.json(result)
 
52
 
53
+ elif input_type == "JSON File":
54
  uploaded_json = st.file_uploader("πŸ“‚ Upload a JSON file", type=["json"])
55
+ if uploaded_json and st.button("Translate"):
56
+ content = json.load(uploaded_json)
57
+ result = translate_json(content, target_languages)
58
+ st.json(result)
59
+ st.download_button("⬇️ Download Translated JSON", json.dumps(result, indent=4), "translated.json", "application/json")
 
 
 
 
 
60
 
61
+ st.markdown("πŸš€ **Supports over 100 languages!**")