JaganathC commited on
Commit
c3765b2
Β·
verified Β·
1 Parent(s): e032172

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +64 -24
app.py CHANGED
@@ -1,34 +1,74 @@
1
  import streamlit as st
2
- from googletrans import Translator
 
3
 
4
- # Initialize Translator
5
- translator = Translator()
6
 
7
- def translate_text(text, target_lang):
8
- """Translates text using Google Translate."""
9
- try:
10
- translated_text = translator.translate(text, dest=target_lang).text
11
- return translated_text
12
- except Exception as e:
13
- return f"Error: {e}"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
 
15
  # Streamlit UI
16
- st.title("🌍 File Translator using Google Translate")
 
 
 
 
 
 
17
 
18
- uploaded_file = st.file_uploader("πŸ“‚ Upload a text file", type=["txt"])
19
- target_language = st.selectbox("🎯 Select target language", ["fr", "es", "de", "hi", "zh", "ar", "ru", "ja", "it"])
 
 
 
 
 
20
 
21
- if uploaded_file and target_language:
22
- file_text = uploaded_file.read().decode("utf-8")
23
- translated_text = translate_text(file_text, target_language)
 
 
 
 
24
 
25
- st.subheader("πŸ“ Translated Text")
26
- st.text_area("", translated_text, height=200)
 
 
 
 
 
27
 
28
- # Save and provide download link
29
- translated_filename = "translated_output.txt"
30
- with open(translated_filename, "w", encoding="utf-8") as f:
31
- f.write(translated_text)
32
 
33
- with open(translated_filename, "rb") as f:
34
- st.download_button("πŸ“₯ Download Translated File", f, file_name="translated_output.txt", mime="text/plain")
 
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")