-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTranslationModule.py
45 lines (36 loc) · 1.49 KB
/
TranslationModule.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
from watson_developer_cloud import LanguageTranslatorV2
class TranslationModule:
def __init__(self, username: str, password: str):
try:
self._language_translator = LanguageTranslatorV2(username=str(username),
password=str(password))
self._possible_models = set()
temp = self._language_translator.get_models()['models']
for ele in temp:
if ele['target'] == 'en':
self._possible_models.add(ele['source'])
except Exception:
print("Cannot connect to translation service. Aborting.")
def _get_model(self, message):
"""
:param message: predicts which language it is in to translate from
:return: the model predicted
"""
try:
return self._language_translator.identify(message)['languages'][0]['language']
except Exception:
return None
def translate_message(self, message):
print(message)
"""
:param message: message to be translated;
:return: the message if no model is available or the translated message
"""
model = self._get_model(message)
if model is None or model not in self._possible_models:
return message
else:
try:
return self._language_translator.translate(message, source=model, target='en')
except Exception:
return message