diff --git a/modules/translate.py b/modules/translate.py
index 13c083b..055408b 100644
--- a/modules/translate.py
+++ b/modules/translate.py
@@ -6,67 +6,92 @@ import socket
import json
from urllib.parse import quote
-nemubotversion = 3.0
+nemubotversion = 3.2
import module_states_file as xmlparser
-LANG = ["ar", "zh", "cz", "en", "fr", "gr", "it", "ja", "ko", "pl", "pt", "ro", "es", "tr"]
+LANG = ["ar", "zh", "cz", "en", "fr", "gr", "it",
+ "ja", "ko", "pl", "pt", "ro", "es", "tr"]
-def parseanswer(msg):
- global LANG
- if msg.cmd[0] == "translate":
+def load(context):
+ from hooks import Hook
+ context.hooks.add_hook(context.hooks.cmd_hook,
+ Hook(cmd_translate, "translate"))
+ context.hooks.add_hook(context.hooks.cmd_hook,
+ Hook(cmd_translate, "traduction"))
+ context.hooks.add_hook(context.hooks.cmd_hook,
+ Hook(cmd_translate, "traduit"))
+ context.hooks.add_hook(context.hooks.cmd_hook,
+ Hook(cmd_translate, "traduire"))
+
+
+def cmd_translate(data, msg):
+ global LANG
startWord = 1
if msg.cmd[startWord] in LANG:
- langTo = msg.cmd[startWord]
- startWord += 1
+ langTo = msg.cmd[startWord]
+ startWord += 1
else:
- langTo = "fr"
- if msg.cmd[startWord] in LANG:
- langFrom = langTo
- langTo = msg.cmd[startWord]
- startWord += 1
- else:
- if langTo == "en":
- langFrom = "fr"
- else:
- langFrom = "en"
+ langTo = "fr"
+ if msg.cmd[startWord] in LANG:
+ langFrom = langTo
+ langTo = msg.cmd[startWord]
+ startWord += 1
+ else:
+ if langTo == "en":
+ langFrom = "fr"
+ else:
+ langFrom = "en"
(res, page) = getPage(' '.join(msg.cmd[startWord:]), langFrom, langTo)
if res == http.client.OK:
- wres = json.loads(page.decode())
- if "Error" in wres:
- msg.send_chn(wres["Note"])
- else:
- start = "Traduction de %s : "%' '.join(msg.cmd[startWord:])
- if "Entries" in wres["term0"]:
- if "SecondTranslation" in wres["term0"]["Entries"]["0"]:
- msg.send_chn(start + wres["term0"]["Entries"]["0"]["FirstTranslation"]["term"] + " ; " + wres["term0"]["Entries"]["0"]["SecondTranslation"]["term"])
- else:
- msg.send_chn(start + wres["term0"]["Entries"]["0"]["FirstTranslation"]["term"])
- elif "PrincipalTranslations" in wres["term0"]:
- if "1" in wres["term0"]["PrincipalTranslations"]:
- msg.send_chn(start + wres["term0"]["PrincipalTranslations"]["0"]["FirstTranslation"]["term"] + " ; " + wres["term0"]["PrincipalTranslations"]["1"]["FirstTranslation"]["term"])
- else:
- msg.send_chn(start + wres["term0"]["PrincipalTranslations"]["0"]["FirstTranslation"]["term"])
- else:
- msg.send_chn("Une erreur s'est produite durant la recherche d'une traduction de %s" % ' '.join(msg.cmd[startWord:]))
+ wres = json.loads(page.decode())
+ if "Error" in wres:
+ msg.send_chn(wres["Note"])
+ else:
+ start = "Traduction de %s : "%' '.join(msg.cmd[startWord:])
+ if "Entries" in wres["term0"]:
+ if "SecondTranslation" in wres["term0"]["Entries"]["0"]:
+ msg.send_chn(start +
+ wres["term0"]["Entries"]["0"]["FirstTranslation"]["term"] +
+ " ; " +
+ wres["term0"]["Entries"]["0"]["SecondTranslation"]["term"])
+ else:
+ msg.send_chn(start +
+ wres["term0"]["Entries"]["0"]["FirstTranslation"]["term"])
+ elif "PrincipalTranslations" in wres["term0"]:
+ if "1" in wres["term0"]["PrincipalTranslations"]:
+ msg.send_chn(start +
+ wres["term0"]["PrincipalTranslations"]["0"]["FirstTranslation"]["term"] +
+ " ; " +
+ wres["term0"]["PrincipalTranslations"]["1"]["FirstTranslation"]["term"])
+ else:
+ msg.send_chn(start +
+ wres["term0"]["PrincipalTranslations"]["0"]["FirstTranslation"]["term"])
+ else:
+ msg.send_chn("Une erreur s'est produite durant la recherche"
+ " d'une traduction de %s"
+ % ' '.join(msg.cmd[startWord:]))
return True
- return False
def getPage(terms, langfrom="fr", langto="en"):
- conn = http.client.HTTPConnection("api.wordreference.com", timeout=5)
- try:
- conn.request("GET", "/0.8/%s/json/%s%s/%s" % (CONF.getNode("wrapi")["key"], langfrom, langto, quote(terms)))
- except socket.gaierror:
- print ("impossible de récupérer la page WordReference.")
- return (http.client.INTERNAL_SERVER_ERROR, None)
- except (TypeError, KeyError):
- print ("You need a WordReference API key in order to use this module. Add it to the module configuration file:\n\nRegister at http://www.wordreference.com/docs/APIregistration.aspx")
- return (http.client.INTERNAL_SERVER_ERROR, None)
+ conn = http.client.HTTPConnection("api.wordreference.com", timeout=5)
+ try:
+ conn.request("GET", "/0.8/%s/json/%s%s/%s" % (
+ CONF.getNode("wrapi")["key"], langfrom, langto, quote(terms)))
+ except socket.gaierror:
+ print ("impossible de récupérer la page WordReference.")
+ return (http.client.INTERNAL_SERVER_ERROR, None)
+ except (TypeError, KeyError):
+ print ("You need a WordReference API key in order to use this module."
+ " Add it to the module configuration file:\n\nRegister at "
+ "http://www.wordreference.com/docs/APIregistration.aspx")
+ return (http.client.INTERNAL_SERVER_ERROR, None)
- res = conn.getresponse()
- data = res.read()
+ res = conn.getresponse()
+ data = res.read()
- conn.close()
- return (res.status, data)
+ conn.close()
+ return (res.status, data)