diff --git a/requirements.txt b/requirements.txt index ea32d74..5e53e75 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,4 +5,5 @@ configobj pypubsub==3.3.0 requests-oauthlib future -arrow \ No newline at end of file +arrow +yandex.translate \ No newline at end of file diff --git a/src/controller/messages.py b/src/controller/messages.py index 2c4c5a9..d47983d 100644 --- a/src/controller/messages.py +++ b/src/controller/messages.py @@ -55,9 +55,8 @@ class post(object): dlg = translator.gui.translateDialog() if dlg.get_response() == widgetUtils.OK: text_to_translate = self.message.get_text() - source = [x[0] for x in translator.translator.available_languages()][dlg.get("source_lang")] dest = [x[0] for x in translator.translator.available_languages()][dlg.get("dest_lang")] - msg = translator.translator.translate(text_to_translate, source, dest) + msg = translator.translator.translate(text_to_translate, dest) self.message.set_text(msg) self.message.text_focus() output.speak(_(u"Translated")) diff --git a/src/controller/posts.py b/src/controller/posts.py index f4dd0db..d1e3c1e 100644 --- a/src/controller/posts.py +++ b/src/controller/posts.py @@ -316,9 +316,8 @@ class postController(object): dlg = translator.gui.translateDialog() if dlg.get_response() == widgetUtils.OK: text_to_translate = self.dialog.post_view.GetValue().encode("utf-8") - source = [x[0] for x in translator.translator.available_languages()][dlg.get("source_lang")] dest = [x[0] for x in translator.translator.available_languages()][dlg.get("dest_lang")] - msg = translator.translator.translate(text_to_translate, source, dest) + msg = translator.translator.translate(text_to_translate, target=dest) self.dialog.post_view.ChangeValue(msg) output.speak(_(u"Translated")) else: diff --git a/src/extra/translator/translator.py b/src/extra/translator/translator.py index 2256802..7852741 100644 --- a/src/extra/translator/translator.py +++ b/src/extra/translator/translator.py @@ -1,11 +1,13 @@ # -*- coding: utf-8 -*- -#from microsofttranslator import Translator - -def translate(text="", source="auto", target="en"): - t = Translator("twblue", "4KZA26GYIfmVAqQA/z16Hlucbg64hVSDTIpRjT2FqIU=") - return t.translate(text, target) +from yandex_translate import YandexTranslate +def translate(text="", target="en"): + t = YandexTranslate("trnsl.1.1.20161012T134532Z.d01b9c75fc39aa74.7d1be75a5166a80583eeb020e10f584168da6bf7") + vars = dict(text=text, lang=target) + return t.translate(**vars)["text"][0] +supported_langs = None +d = None languages = { "af": _(u"Afrikaans"), "sq": _(u"Albanian"), @@ -71,7 +73,7 @@ languages = { "ps": _(u"Pashto"), "fa": _(u"Persian"), "pl": _(u"Polish"), - "pt-PT": _(u"Portuguese"), + "pt": _(u"Portuguese"), "pa": _(u"Punjabi"), "ro": _(u"Romanian"), "ru": _(u"Russian"), @@ -101,8 +103,11 @@ languages = { } def available_languages(): - l = languages.keys() - d = languages.values() - l.insert(0, '') - d.insert(0, _(u"autodetect")) - return sorted(zip(l, d)) + global supported_langs, d + if supported_langs == None and d == None: + t = YandexTranslate("trnsl.1.1.20161012T134532Z.d01b9c75fc39aa74.7d1be75a5166a80583eeb020e10f584168da6bf7") + supported_langs = t.langs + d = [] + for i in supported_langs: + d.append(languages[i]) + return sorted(zip(supported_langs, d)) diff --git a/src/extra/translator/wx_ui.py b/src/extra/translator/wx_ui.py index 073837c..6c42bcb 100644 --- a/src/extra/translator/wx_ui.py +++ b/src/extra/translator/wx_ui.py @@ -18,28 +18,26 @@ ############################################################ import translator import wx -import widgetUtils -class translateDialog(widgetUtils.BaseDialog): - def __init__(self): - super(translateDialog, self).__init__(None, -1, title=_(u"Translate message")) - panel = wx.Panel(self) - sizer = wx.BoxSizer(wx.VERTICAL) - staticSource = wx.StaticText(panel, -1, _(u"&Source language")) - self.source_lang = wx.ComboBox(panel, -1, choices=[x[1] for x in translator.available_languages()], style = wx.CB_READONLY) - self.source_lang.SetFocus() - staticDest = wx.StaticText(panel, -1, _(u"&Target language")) - self.source_lang.SetSelection(0) - self.dest_lang = wx.ComboBox(panel, -1, choices=[x[1] for x in translator.available_languages()], style = wx.CB_READONLY) - listSizer = wx.BoxSizer(wx.HORIZONTAL) - listSizer.Add(staticSource) - listSizer.Add(self.source_lang) - listSizer.Add(staticDest) - listSizer.Add(self.dest_lang) - ok = wx.Button(panel, wx.ID_OK) - ok.SetDefault() - cancel = wx.Button(panel, wx.ID_CANCEL) - self.SetEscapeId(wx.ID_CANCEL) +class translateDialog(wx.Dialog): + def __init__(self): + super(translateDialog, self).__init__(None, -1, title=_(u"Translate message")) + panel = wx.Panel(self) + sizer = wx.BoxSizer(wx.VERTICAL) + staticDest = wx.StaticText(panel, -1, _(u"Target language")) + self.dest_lang = wx.ComboBox(panel, -1, choices=[x[1] for x in translator.available_languages()], style = wx.CB_READONLY) + self.dest_lang.SetFocus() + self.dest_lang.SetSelection(0) + listSizer = wx.BoxSizer(wx.HORIZONTAL) + listSizer.Add(staticDest) + listSizer.Add(self.dest_lang) + ok = wx.Button(panel, wx.ID_OK) + ok.SetDefault() + cancel = wx.Button(panel, wx.ID_CANCEL) + self.SetEscapeId(wx.ID_CANCEL) - def get(self, control): - return getattr(self, control).GetSelection() \ No newline at end of file + def get(self, control): + return getattr(self, control).GetSelection() + + def get_response(self): + return self.ShowModal() \ No newline at end of file