def update_display(self, msg): """ Receives data from thread and updates the frame """ if config.useGoogle: config.isRunTranslate=False tranText=msg.data[1][0][0] ishText=msg.data[1][0][1] latTranText=msg.data[1][0][2] latIshText=msg.data[1][0][3] dTranText="" translatedText="" try: for text in msg.data[1][1]: dTranText+=text+" " except Exception: pass if msg.data[len(msg.data)-1]==self.countRunTranslator: lang='' if self.view.t_choiceLangFrom.GetStringSelection() == 'Auto': for k, v in langForTran.iteritems(): if k==msg.data[0]: lang=v if dTranText!="": translatedText=tranText+'\n--------------\n'+dTranText+'\n-------------\n('+_('Source lang is ') +lang+')' self.view.t_textCtrl.SetValue(tranText+'\n--------------\n'+dTranText+'\n-------------\n('+_('Source lang is ') +lang+')') else: translatedText=tranText+'\n-------------\n('+_('Source lang is ') +lang+')' self.view.t_textCtrl.SetValue(tranText+'\n-------------\n('+_('Source lang is ') +lang+')') else: self.view.t_textCtrl.SetValue(tranText) self.translatedText=msg.data[1][0][0] self.show_controls() self.set_size(translatedText) self.set_position() self.countRunTranslator=0 else: config.isRunTranslate=False if msg.data[2]==self.countRunTranslator: lang='' if self.view.t_choiceLangFrom.GetStringSelection() == 'Auto': for k, v in langForTran.iteritems(): if k==msg.data[0]: lang=v self.view.t_textCtrl.SetValue(msg.data[1]+'\n('+_('Source lang is ') +lang+')') else: self.view.t_textCtrl.SetValue(msg.data[1]) self.translatedText=msg.data[1] self.show_controls() self.set_size(msg.data[1]) self.set_position() self.countRunTranslator=0
def set_languages(self): """ set languages name in t_choiceLangFrom and t_choiceLangTo when frame show """ self.languagesFrom=[] self.languagesTo=[] languages=[] for k, v in langForTran.iteritems(): languages.append(v) countItem=0 languages.sort() languagesCopy=list(languages) for s in languagesCopy: if s in config.langList: languages.remove(s) languages.insert(countItem,s) countItem+=1 if countItem == len(config.langList): languages.insert(countItem,"--------") break self.languagesTo=languages self.languagesFrom=['Auto']+languages self.view.t_choiceLangFrom.SetItems(self.languagesFrom) self.view.t_choiceLangFrom.Selection=self.languagesFrom.index(config.defaultLangFrom) self.view.t_choiceLangTo.SetItems(self.languagesTo) self.view.t_choiceLangTo.Selection = self.languagesTo.index(config.defaultLangTo)
def start_translate(self,langFrom,langTo): """ search languages modules and start translate """ _targetLang='' _sourceLang='' for k, v in langForTran.iteritems(): if v==langTo: _targetLang=k if v==langFrom: _sourceLang=k if langFrom=='Auto': _sourceLang="auto" # print "start translate" translatethread.TranslateThread(self.selectedText,sourceLang=_sourceLang,targetLang=_targetLang, countRunTranslator=self.countRunTranslator)
def run(self): """Run Worker Thread.""" # options.isRunTranslate=False publisher = pub.Publisher() result=[] try: if self.sourceLang=="auto": self.sourceLang=None tran= Translator('5879888D232D8A18B987C92997518E37EEEF20AB') sourceL=tran.detect(self.sourceText.encode("utf-8")) # sourceL=tran.detect(self.sourceText) # if language of source text is target language then target language equally source language if self.targetLang==sourceL and len(config.langList)==2: for lang in config.langList: langAbr='' for k, v in langForTran.iteritems(): if v==lang: langAbr=k if langAbr!=self.targetLang: self.targetLang=langAbr break time.sleep(0.1) result.append(sourceL) if config.useBing: result.append(tran.translate(self.sourceText.encode("utf-8"),self.targetLang,from_lang=self.sourceLang)) if config.useGoogle: if os.name=="nt": result.append(translate_google(self.sourceText,self.sourceLang,self.targetLang)) else: result.append(translate_google(self.sourceText.decode("utf-8"),self.sourceLang,self.targetLang)) result.append(self.countRunTranslator) # print result[1] time.sleep(0.1) if not self.mainTranslate: wx.CallAfter(publisher.sendMessage,"TRANSLATE", result) else: wx.CallAfter(publisher.sendMessage,"MAINTRANSLATE", result) except Exception: result=("",self.countRunTranslator,"Sorry, an error occurred") if not self.mainTranslate: wx.CallAfter(publisher.sendMessage,"TRANSLATE", result) else: wx.CallAfter(publisher.sendMessage,"MAINTRANSLATE", result)