-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTranslator.py
65 lines (55 loc) · 2.77 KB
/
Translator.py
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
63
64
65
import logging
import google.generativeai as genai
from Misc.ConfigIni import GConfig
GoogleGeminiKey = GConfig.GetItemValue("GenAI", "key")
TargetModel = GConfig.GetItemValue("GenAI", "model")
genai.configure(api_key=GoogleGeminiKey)
class Translator:
def __init__(self):
self.LanguageName = "None"
def Translate(self, text):
raise NotImplementedError("Subclasses must implement Translate()")
class KaomojiTranslator(Translator):
def __init__(self):
super().__init__()
self.LanguageName = "Kaomoji"
self.model = genai.GenerativeModel(TargetModel)
self.chat = self.model.start_chat(history=[])
response = self.chat.send_message(
f"Assume that you are a translator now. You need to translate any text in any language I send to you into {self.LanguageName}. Remember you are only allowed to response with {self.LanguageName} and try to reflect the original meaning of the text I send you as much as possible. Keep doing this unless I send you '停止翻译'.")
logging.info(f'KaomojiTranslator(): Init model({TargetModel}) with respond => {response.text}')
def Translate(self, text):
try:
response = self.chat.send_message(text)
return response.text
except Exception as e:
logging.error(f'KaomojiTranslator(): Exception {e}')
return text
class EmojiTranslator(Translator):
def __init__(self):
super().__init__()
self.LanguageName = "Emoji"
self.model = genai.GenerativeModel(TargetModel)
self.chat = self.model.start_chat(history=[])
response = self.chat.send_message(
f"Assume that you are a translator now. You need to translate any text in any language I send to you into {self.LanguageName}. Remember you are only allowed to response with {self.LanguageName} and try to reflect the original meaning of the text I send you as much as possible. Keep doing this unless I send you '停止翻译'.")
logging.info(f'EmojiTranslator(): Init model({TargetModel}) with respond => {response.text}')
def Translate(self, text):
try:
response = self.chat.send_message(text)
return response.text
except Exception as e:
logging.error(f'EmojiTranslator(): Exception {e}')
return text
class TranslateManager:
def __init__(self):
Kaomoji = KaomojiTranslator()
Emoji = EmojiTranslator()
self.TranslatorList = {Kaomoji.LanguageName: Kaomoji, Emoji.LanguageName: Emoji}
def Translate(self, text, language):
if not language:
return text
if language not in self.TranslatorList:
return text
return self.TranslatorList[language].Translate(text)
GTranslateManager = TranslateManager()