GoppyKrishna77 commited on
Commit
b1add7a
·
verified ·
1 Parent(s): 41e17c6

Initial Upload

Browse files
Files changed (4) hide show
  1. app.py +72 -0
  2. logger.py +37 -0
  3. logs.json +5 -0
  4. requirements.txt +2 -0
app.py ADDED
@@ -0,0 +1,72 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ from google_trans import LANGCODES
3
+ from translate.translate import Translator
4
+
5
+ from logger import log
6
+
7
+ LANGUAGES = [lang.title() for lang in LANGCODES.keys()]
8
+
9
+
10
+ def translate(text, from_lang, to_lang, history):
11
+
12
+ if text.strip() == "":
13
+ return "", history
14
+
15
+ if not from_lang:
16
+ raise gr.Error("From Language not selected")
17
+
18
+ if not to_lang:
19
+ raise gr.Error("To Language not selected")
20
+
21
+ translator = Translator(
22
+ from_lang=LANGCODES[from_lang.lower()], to_lang=LANGCODES[to_lang.lower()]
23
+ )
24
+
25
+ translated_text = translator.translate(text)
26
+
27
+ history.append((text, translated_text))
28
+
29
+ log(text, from_lang, to_lang, translated_text)
30
+
31
+ return "", history
32
+
33
+
34
+ def switch_languages(from_lang, to_lang):
35
+ return to_lang, from_lang
36
+
37
+
38
+ with gr.Blocks() as app:
39
+
40
+ gr.Markdown("# Tranlato Bot 🤖")
41
+
42
+ chat_bot = gr.Chatbot()
43
+ text = gr.Textbox(label="Text", show_label=False, placeholder="Enter text to Translate...")
44
+
45
+ with gr.Row():
46
+ from_lang = gr.Dropdown(LANGUAGES, label="From Language", scale=2)
47
+ switch = gr.Button("⇄")
48
+ to_lang = gr.Dropdown(LANGUAGES, label="To Language", scale=2)
49
+
50
+ with gr.Row():
51
+ translate_btn = gr.Button("Translate")
52
+ gr.ClearButton([text, from_lang, to_lang, chat_bot])
53
+
54
+ gr.Examples(
55
+ examples=[
56
+ ["The weather is nice today.", "English", "Tamil"],
57
+ ["இன்று காலநிலை நல்லது.", "Tamil", "English"],
58
+ ["अब क्या समय हो रहा है?", "Hindi", "Spanish"],
59
+ ["¿Qué hora es?", "Spanish", "Hindi"],
60
+ ],
61
+ inputs=[text, from_lang, to_lang, chat_bot],
62
+ )
63
+
64
+ switch.click(switch_languages, [from_lang, to_lang], [from_lang, to_lang])
65
+ text.submit(translate, [text, from_lang, to_lang, chat_bot], [text, chat_bot])
66
+ translate_btn.click(
67
+ translate, [text, from_lang, to_lang, chat_bot], [text, chat_bot]
68
+ )
69
+
70
+
71
+ app.title = "Translato Bot"
72
+ app.launch()
logger.py ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import json
2
+ from datetime import datetime
3
+ import os
4
+
5
+ MAX_LOG_ENTRIES = 100
6
+
7
+ log_file = os.path.join(os.path.dirname(__file__), "logs.json")
8
+
9
+ def log(text, from_lang, to_lang, translated_text):
10
+
11
+ log_entry = {
12
+ "text": text,
13
+ "from_lang": from_lang,
14
+ "to_lang": to_lang,
15
+ "translated_text": translated_text,
16
+ "timestamp": datetime.now().strftime("%d-%m-%Y %H:%M:%S")
17
+ }
18
+
19
+ try:
20
+ with open(log_file, 'r+') as file:
21
+ logs = json.load(file)
22
+
23
+ if "chats" not in logs:
24
+ logs["chats"] = []
25
+
26
+ logs["chats"].append(log_entry)
27
+
28
+ if len(logs["chats"]) > MAX_LOG_ENTRIES:
29
+ logs["chats"] = logs["chats"][-MAX_LOG_ENTRIES:]
30
+
31
+ file.seek(0)
32
+ json.dump(logs, file, indent=4)
33
+
34
+ except (FileNotFoundError, json.JSONDecodeError) as e:
35
+ print(f"Error occurred: {e}")
36
+ with open(log_file, 'w') as file:
37
+ json.dump({"chats": [log_entry]}, file, indent=4)
logs.json ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ {
2
+ "chats": [
3
+
4
+ ]
5
+ }
requirements.txt ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ google_trans
2
+ translate