подправить скрипт онлайн переводчика

Разработка приложений на python. Советы, примеры и обсуждение найденных ошибок
Ответить
Аватара пользователя
svm
Сообщения: 15
Зарегистрирован: 04 дек 2017, 15:28
Темы: 2
Откуда: Novosibirsk
Статус: Не в сети

подправить скрипт онлайн переводчика

Сообщение svm » 05 дек 2017, 09:25

есть скриптик pungles , правда тут он уже закомпиленый,
вот он в исходниках на ya.disk , уже не помню откуды скачивал.
проблема с переводом многострочного текста .
удобная штука,повесил на Hotkey Win+? и можно пользовать в любом месте системы (в окнах)
pangles.pyПоказать

Код: Выделить всё

#!/usr/bin/env python

#PANGLES V1.0
#2011-JUNE-15
#AUTHOR MARTYN CRABTREE <email@marteq.net>
#COPYRIGHT 2011 MARTYN CRABTREE






import os

import socket
socket.setdefaulttimeout(5)


import sys
import urllib
import re


import pygtk
pygtk.require('2.0')
import gtk
import time


import gobject


import string


selectionMode="CLIPBOARD"   
strLanguage="English"
strOldClipText=""
homeDir=os.path.expanduser("~")
execPath=sys.path[0]

lstDictionary=[]
lstDictionarySans=[]
lstLine=[]

red_tag=""
green_tag=""
blue_tag=""

winWidth=0
winHeight=0
winX=0
winY=0

def readOptions():

    global selectionMode
    
    if os.path.exists(execPath+"/pangles.config"):
        
        in_file = open(execPath+"/pangles.config","r")
        text = in_file.read()

        [line1,line2,line3,line4,line5,line6,line7,line8,line9,line10,line11,line12,line13]=string.split(text, "\n")

        if line1=="swap_on":
            objPanglesGUI.tbuttonSwap.set_active(True)
        else:
            objPanglesGUI.tbuttonSwap.set_active(False)

        if line2=="clipboard":
            objPanglesGUI.radbutOptions1.set_active(True)  
            selectionMode="CLIPBOARD"
        else:
            objPanglesGUI.radbutOptions2.set_active(True)  
            selectionMode="PRIMARY"
            

        intTimeout=int(line3)
        objPanglesGUI.sbuttonOptions.set_value(intTimeout)
        socket.setdefaulttimeout(float(line3))

        if line4=="on":         
            objPanglesGUI.radbutOptions3.set_active(True)  
        else:
            objPanglesGUI.radbutOptions4.set_active(True)  



        if line5=="yahoo_on":
            objPanglesGUI.checkOptions1.set_active(True)  
        else:
            objPanglesGUI.checkOptions1.set_active(False)  

        if line6=="ft_on":
            objPanglesGUI.checkOptions2.set_active(True)  
        else:
            objPanglesGUI.checkOptions2.set_active(False)  

        if line7=="google_on":
            objPanglesGUI.checkOptions3.set_active(True)  
        else:
            objPanglesGUI.checkOptions3.set_active(False)  

        intWidth=int(line8)
        intHeight=int(line9)
        objPanglesGUI.windowMain.resize(intWidth,intHeight)

        intX=int(line10)
        intY=int(line11)
        objPanglesGUI.windowMain.move(intX,intY)

        intLangIndex=int(line12)
        objPanglesGUI.comboLanguages.set_active(intLangIndex)

        in_file.close()    
    return

def writeOptions():

    out_file = open(execPath+"/pangles.config","w")
    
    if objPanglesGUI.tbuttonSwap.get_active()==True:  
        out_file.write("swap_on\n") 
    else:
        out_file.write("swap_off\n")    
        
    if objPanglesGUI.radbutOptions1.get_active()==True:  
        out_file.write("clipboard\n")
    else:
        out_file.write("highlight\n")

    intTimeout=objPanglesGUI.sbuttonOptions.get_value_as_int()    
    strTimeout=repr(intTimeout)+"\n"
    out_file.write(strTimeout)
    
    if objPanglesGUI.radbutOptions3.get_active()==True:           
        out_file.write("on\n")
    else:
        out_file.write("off\n")


    if objPanglesGUI.checkOptions1.get_active()==True:
        out_file.write("yahoo_on\n")
    else:
        out_file.write("yahoo_off\n")

    if objPanglesGUI.checkOptions2.get_active()==True:
        out_file.write("ft_on\n")
    else:
        out_file.write("ft_off\n")

    if objPanglesGUI.checkOptions3.get_active()==True:
        out_file.write("google_on\n")
    else:
        out_file.write("google_off\n")

    strWidth=repr(winWidth)+"\n"
    out_file.write(strWidth)
    strHeight=repr(winHeight)+"\n"
    out_file.write(strHeight)

    strX=repr(winX)+"\n"
    out_file.write(strX)
    strY=repr(winY)+"\n"
    out_file.write(strY)

    intLangIndex=objPanglesGUI.comboLanguages.get_active()
    strLangIndex=repr(intLangIndex)+"\n"
    out_file.write(strLangIndex)

    out_file.close()

    return


class Translate:
    
    listLanguagesE=['English->Chinese Simp','English->Chinese Trad','English->Dutch','English->French','English->German','English->Greek','English->Italian','English->Japanese','English->Korean','English->Portuguese','English->Russian','English->Spanish']
    listLanguagesF=['Chinese Simp->English','Chinese Trad->English','Dutch->English','French->English','German->English','Greek->English','Italian->English','Japanese->English','Korean->English','Portuguese->English','Russian->English','Spanish->English']

    yahooLang=['en_zh','en_zt','en_nl','en_fr','en_de','en_el','en_it','en_ja','en_ko','en_pt','en_ru','en_es','zh_en','zt_en','nl_en','fr_en','de_en','el_en','it_en','ja_en','ko_en','pt_en','ru_en','es_en']
    freeLang=['na','na','English/Dutch','English/French','English/German','na','English/Italian','English/Japanese','na','English/Portuguese','English/Russian','English/Spanish','na','na','Dutch/English','French/English','German/English','na','Italian/English','Japanese/English','na','Portuguese/English','Russian/English','Spanish/English']
    googleLang=['en|zh-CN','en|zh-TW','en|nl','en|fr','en|de','en|el','en|it','en|ja','en|ko','en|pt','en|ru','en|es','zh-CN|en','zh-TW','nl|en','fr|en','de|en','el|en','it|en','ja|en','ko|en','pt|en','ru|en','es|en']

    def populateCombo(self,comboBox,buttonSwap):
        saveIndex=comboBox.get_active() 

        for language in self.listLanguagesE:    
                comboBox.remove_text(0)         
        
        if buttonSwap.get_active() ==False:    
            for language in self.listLanguagesE:
                comboBox.append_text(language)
        else:
            for language in self.listLanguagesF:    
                comboBox.append_text(language)
        
        comboBox.set_active(saveIndex)

    def requestYahoo(self,text,intIndex):

        strShort=self.yahooLang[intIndex]

        if strShort=="na":
            return "Language not supported."
            
        urllib.FancyURLopener.version="Mozilla/5.0 (X11; Linux i686; rv:2.0.1) Gecko/20110429 Firefox/4.0.1"

        try:
            resultPage = urllib.urlopen("http://babelfish.yahoo.com/translate_txt?lp="+strShort+"&ei=utf8&eo=utf8&trtext="+text)

        except IOError, e:
            return "Timeout Error"

        content = resultPage.read()
        resultPage.close()
        
        objFoundText = re.search('<div style="padding:0.6em;">(.*?)</div>', content)

        try:
            strConverted = objFoundText.groups()[0]
        except AttributeError,e:
            return "Translate Error"
        
        
        strConverted=strConverted.replace("&quot;",'"')
        strConverted=strConverted.replace("&#39;","'")
        strConverted=strConverted.replace("&lt;","<")
        strConverted=strConverted.replace("&gt;",">")
        
        return strConverted

    def requestFree(self,text, intIndex):
        
        strShort=self.freeLang[intIndex]

        if strShort=="na":
            return "Language not supported."
            
        urllib.FancyURLopener.version="Mozilla/5.0 (X11; Linux i686; rv:2.0.1) Gecko/20110429 Firefox/4.0.1"
        
        try:
            resultPage = urllib.urlopen('http://ets.freetranslation.com/?language='+strShort+'&mode=html&charset=UTF-8&sequence=core&srctext='+text)
        except IOError, e:
            return "Timeout Error"

        content = resultPage.read()
        resultPage.close()
        
        objFoundText = re.search("Machine Translation ----------------<br>\n(.*?)\n</p>", content)
        
        try:
            strConverted = objFoundText.groups()[0]
        except AttributeError,e:
            return "Translate Error"
        
        
        strConverted=strConverted.replace("&quot;",'"')
        strConverted=strConverted.replace("&#39;","'")
        strConverted=strConverted.replace("&lt;","<")
        strConverted=strConverted.replace("&gt;",">")

        return strConverted

    def requestGoogle(self,text, intIndex):

        strShort=self.googleLang[intIndex]

        if strShort=="na":
            return "Language not supported."

        urllib.FancyURLopener.version="Mozilla/5.0 (X11; Linux i686; rv:2.0.1) Gecko/20110429 Firefox/4.0.1"

        try:
            resultPage = urllib.urlopen('http://www.google.com/translate_t?langpair='+strShort+'&text='+text)
        except IOError, e:
            return "Timeout Error"

        content = resultPage.read()
        resultPage.close()
        
        objFoundText = re.search("onmouseout=\"this.style.backgroundColor='#fff'\">(.*?)</span>", content)
        
        try:
            strConverted = objFoundText.groups()[0]
        except AttributeError,e:
            return "Translate Error"
        
        
        strConverted=strConverted.replace("&quot;",'"')
        strConverted=strConverted.replace("&#39;","'")
        strConverted=strConverted.replace("&lt;","<")
        strConverted=strConverted.replace("&gt;",">")
        
        return strConverted

class PanglesGUI:

    

    
    
    def timerHandler(self):
        global strOldClipText
        global selectionMode
        global winWidth,winHeight
        global winX,winY
        
        winWidth,winHeight=objPanglesGUI.windowMain.get_size()
        winX,winY=objPanglesGUI.windowMain.get_position()
        
        
        clipboard = gtk.clipboard_get(selection=selectionMode)  

        
        text = clipboard.wait_for_text()

        if (text!=strOldClipText) and (text!=None):
            self.entryMain.set_text(text)
            self.entryHandler(self)     
            strOldClipText=text            

        

        return True
        


    def entryHandler(self,widget,data=None):
        
        if self.radbutOptions3.get_active()==True:                  
            self.windowMain.present_with_time(int(time.time()))     
            self.windowMain.window.focus()     

        strEntry=self.entryMain.get_text()
        strEntry=strEntry.replace('\n',' ')
        
        if strEntry=="":
            self.tbufferMain.set_text("Please enter some text")
            return

        self.tbufferMain.set_text("")
        
        self.windowMain.set_sensitive(False) 
        self.tbufferMain.set_text("Translating Online\nPlease Wait...")

        
        while gtk.events_pending():
            gtk.main_iteration(False)

        
        
        self.tbufferMain.set_text("")

        langIndex=self.comboLanguages.get_active()
        if self.tbuttonSwap.get_active() ==True:    
            langIndex+=len(objTranslate.listLanguagesE)         

        if self.checkOptions1.get_active()==True:   
            strTran=objTranslate.requestYahoo(strEntry, langIndex)+'\n'
            position = self.tbufferMain.get_end_iter()
            self.tbufferMain.insert_with_tags( position, strTran,red_tag) 

        if self.checkOptions2.get_active()==True:   
            strTran=objTranslate.requestFree(strEntry, langIndex)+'\n'
            position = self.tbufferMain.get_end_iter()
            self.tbufferMain.insert_with_tags( position, strTran,green_tag) 

        if self.checkOptions3.get_active()==True:   
            strTran=objTranslate.requestGoogle(strEntry, langIndex)
            position = self.tbufferMain.get_end_iter()
            self.tbufferMain.insert_with_tags( position, strTran,blue_tag) 

        self.windowMain.set_sensitive(True)         
        
        
        if self.radbutOptions3.get_active()==True:      
            self.windowMain.set_focus(self.entryMain)   


    def destroy(self, widget, data=None):


        writeOptions()
        gtk.main_quit()
        
    def delete_event(self, widget, event, data=None):
        
        return False

    def destroyOptions(self, widget, data=None):        
        
        self.windowOptions.hide()
        return True
        
    def delete_eventOptions(self, widget, event, data=None):    
        global selectionMode
        
        
        socket.setdefaulttimeout(self.sbuttonOptions.get_value_as_int())
        
        if self.radbutOptions1.get_active()==True:      
            selectionMode="CLIPBOARD"
        else:
            selectionMode="PRIMARY"
        
        self.windowOptions.hide()
        return True

    def delete_eventAbout(self, widget, event, data=None):
        self.windowAbout.hide()
        return True
                
    def toggleLanguage(self,widget, data=None):
        
        objTranslate.populateCombo(self.comboLanguages,widget)
        
        
    def optionsHandler(self,widget,data=None):
        self.windowOptions.show()
        return

    def aboutHandler(self,widget,data=None):
        
        self.windowAbout.show()
        return

    
    def __init__(self):
        global red_tag, green_tag,blue_tag

        self.windowMain = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.vBox=gtk.VBox(homogeneous=False, spacing=0)
        self.hbBox=gtk.HButtonBox()
        self.tbuttonSwap = gtk.ToggleButton("Swap")
        self.buttonAbout = gtk.Button("About")
        self.swinMain=gtk.ScrolledWindow(hadjustment=None, vadjustment=None)
        self.tviewMain=gtk.TextView(buffer=None)
        self.tbufferMain=self.tviewMain.get_buffer()    
        red_tag = self.tbufferMain.create_tag(foreground="#AA0000")
        green_tag = self.tbufferMain.create_tag(foreground="#00AA00")
        blue_tag = self.tbufferMain.create_tag(foreground="#0000AA")
        self.entryMain=gtk.Entry(max=0)
        self.hbBox2=gtk.HButtonBox()
        self.buttonTranslate = gtk.Button("Translate")
        self.buttonOptions=gtk.Button("Options")

        self.comboLanguages=gtk.combo_box_new_text()    

        
        
        self.windowOptions = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.vboxOptions=gtk.VBox(homogeneous=False, spacing=0)
        self.hboxOptions=gtk.HBox()
        self.labelOptions1=gtk.Label(str="OPTIONS")
        self.hsepOptions1=gtk.HSeparator()
        self.labelOptions2=gtk.Label(str="\nTranslator Timeout (seconds):\n ")
        self.sbuttonOptions=gtk.SpinButton(adjustment=None, climb_rate=0.0, digits=0)
        self.hsepOptions2=gtk.HSeparator()
        
        self.hboxOptions3=gtk.HBox()
        self.labelOptions4=gtk.Label(str="\nPopup Window:\n")
        self.radbutOptions3=gtk.RadioButton(group=None, label="On", use_underline=True)
        self.radbutOptions4=gtk.RadioButton(group=self.radbutOptions3, label="Off", use_underline=True)
        self.hsepOptions4=gtk.HSeparator()
        
        self.hboxOptions2=gtk.HBox()
        self.labelOptions3=gtk.Label(str="\nSelection Method:\n")
        self.radbutOptions1=gtk.RadioButton(group=None, label="Clipboard", use_underline=True)
        self.radbutOptions2=gtk.RadioButton(group=self.radbutOptions1, label="Highlight", use_underline=True)
        
        self.hsepOptions3=gtk.HSeparator()        
        self.checkOptions1=gtk.CheckButton(label="Yahoo Babelfish", use_underline=True)
        self.checkOptions2=gtk.CheckButton(label="FreeTranslation.com", use_underline=True)
        self.checkOptions3=gtk.CheckButton(label="Google Translate", use_underline=True)

        self.hsepOptions5=gtk.HSeparator()        
        self.hbOptions=gtk.HButtonBox()
        self.buttonOkOptions = gtk.Button("OK")
        self.buttonCancelOptions = gtk.Button("Cancel")
        self.labelOptions5=gtk.Label(str="Select Services:")
        
        
        self.windowAbout = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.vboxAbout=gtk.VBox(homogeneous=False, spacing=0)
        self.labelAbout1=gtk.Label(str="PANGLES 1.0")
        self.hsepAbout1=gtk.HSeparator()


        self.labelAbout2=gtk.Label(str="\nA multi-Language Translator\n\n See man page \
for manual and license. \n\n(c) Copyright 2011 Martyn Crabtree\n")
        self.labelAbout3=gtk.Label(str="filler\n")
        self.buttonOkAbout = gtk.Button("OK")
        

        self.tbuttonSwap.set_tooltip_text("Ingles o Espanol")
        self.buttonAbout.set_tooltip_text("Informacion")
        self.buttonOptions.set_tooltip_text("Opciones")
        self.buttonTranslate.set_tooltip_text("Traducir")

        self.labelOptions2.set_tooltip_text("Interrupcion Programada del Traductor (segundos)")    
        self.labelOptions3.set_tooltip_text("Metodo de Seleccion")
        self.labelOptions4.set_tooltip_text("Ventana Emergente")  
        self.radbutOptions1.set_tooltip_text("Portapapeles")    
        self.radbutOptions2.set_tooltip_text("Seleccionar")     
        self.radbutOptions3.set_tooltip_text("Si")
        self.radbutOptions4.set_tooltip_text("No")

        self.swinMain.set_policy(gtk.POLICY_AUTOMATIC,gtk.POLICY_AUTOMATIC)
        self.tviewMain.set_border_width(5)
        self.tviewMain.set_editable(False)
        self.tviewMain.set_wrap_mode(gtk.WRAP_WORD)
        
        
        
        
        
        
        self.windowOptions.set_modal(True)
        self.windowOptions.set_keep_above(True)
        self.windowOptions.set_position(gtk.WIN_POS_CENTER)
        self.windowOptions.set_transient_for(self.windowMain)
        self.sbuttonOptions.set_editable(True)
        self.sbuttonOptions.set_range(5, 300)
        self.sbuttonOptions.set_increments(5,10)
        self.sbuttonOptions.set_value(5)

        
        self.windowAbout.set_modal(True)
        self.windowAbout.set_keep_above(True)
        self.windowAbout.set_position(gtk.WIN_POS_CENTER)
        self.windowAbout.set_transient_for(self.windowMain)
        self.labelAbout2.set_justify(gtk.JUSTIFY_CENTER)
        


        self.windowMain.add(self.vBox)
        self.vBox.pack_start(self.hbBox, expand=False, fill=False, padding=0)
        self.hbBox.pack_start(self.comboLanguages, expand=True, fill=True, padding=0)
        self.hbBox.pack_start(self.tbuttonSwap, expand=True, fill=True, padding=0)
        self.vBox.pack_start(self.swinMain, expand=True, fill=True, padding=0)
        self.swinMain.add(self.tviewMain)
        self.vBox.pack_start(self.entryMain, expand=False, fill=False, padding=0)
        self.vBox.pack_start(self.hbBox2, expand=False, fill=False, padding=0)
        self.hbBox2.pack_start(self.buttonTranslate, expand=True, fill=True, padding=0)
        self.hbBox2.pack_start(self.buttonOptions, expand=True, fill=True, padding=0)
        self.hbBox2.pack_start(self.buttonAbout, expand=True, fill=True, padding=0)

        
        
        self.windowOptions.add(self.vboxOptions)
        self.vboxOptions.pack_start(self.labelOptions1, expand=False, fill=False, padding=0)
        self.vboxOptions.pack_start(self.hsepOptions1, expand=False, fill=False, padding=0)
        
        self.vboxOptions.pack_start(self.hboxOptions3, expand=False, fill=True)
        self.hboxOptions3.pack_start(self.labelOptions4, expand=True, fill=True)
        self.hboxOptions3.pack_start(self.radbutOptions3, expand=True, fill=True)
        self.hboxOptions3.pack_start(self.radbutOptions4, expand=True, fill=True)
        self.vboxOptions.pack_start(self.hsepOptions4, expand=False, fill=False)
               
        self.vboxOptions.pack_start(self.hboxOptions, expand=True, fill=True)
        self.hboxOptions.pack_start(self.labelOptions2, expand=True, fill=True)
        self.hboxOptions.pack_start(self.sbuttonOptions, expand=True, fill=True)
        self.vboxOptions.pack_start(self.hsepOptions3, expand=False, fill=False)        

        self.vboxOptions.pack_start(self.hboxOptions2, expand=False, fill=True)
        self.hboxOptions2.pack_start(self.labelOptions3, expand=True, fill=True)
        self.hboxOptions2.pack_start(self.radbutOptions1, expand=True, fill=True)
        self.hboxOptions2.pack_start(self.radbutOptions2, expand=True, fill=True)
        self.vboxOptions.pack_start(self.hsepOptions2, expand=False, fill=False)

        self.vboxOptions.pack_start(self.labelOptions5, expand=False, fill=False, padding=0)
        self.vboxOptions.pack_start(self.checkOptions1, expand=False, fill=False, padding=0)
        self.vboxOptions.pack_start(self.checkOptions2, expand=False, fill=False, padding=0)
        self.vboxOptions.pack_start(self.checkOptions3, expand=False, fill=False, padding=0)
        self.vboxOptions.pack_start(self.hsepOptions5, expand=False, fill=False, padding=0)

        self.vboxOptions.pack_start(self.hbOptions, expand=False, fill=False, padding=0)
        self.hbOptions.pack_start(self.buttonOkOptions, expand=True, fill=True, padding=0)
        

        
        self.windowAbout.add(self.vboxAbout)
        self.vboxAbout.pack_start(self.labelAbout1, expand=False, fill=False, padding=0)
        self.vboxAbout.pack_start(self.hsepAbout1, expand=False, fill=False, padding=0)
        self.vboxAbout.pack_start(self.labelAbout2, expand=False, fill=False, padding=0)
        self.vboxAbout.pack_start(self.labelAbout3, expand=False, fill=False, padding=0)
        self.vboxAbout.pack_start(self.buttonOkAbout, expand=False, fill=False, padding=0)
                

        self.windowMain.connect("delete_event", self.delete_event)
        self.windowMain.connect("destroy", self.destroy)
        self.tbuttonSwap.connect("toggled", self.toggleLanguage, None)
        self.entryMain.connect("activate",self.entryHandler,None)
        self.buttonTranslate.connect("clicked", self.entryHandler, None)
        self.buttonOptions.connect("clicked",self.optionsHandler,None)
        self.buttonAbout.connect("clicked",self.aboutHandler,None)
        
        self.windowOptions.connect("delete_event", self.delete_eventOptions)
        self.windowOptions.connect("destroy", self.destroyOptions)
        self.buttonOkOptions.connect("clicked", self.delete_eventOptions, None)         
        self.buttonCancelOptions.connect("clicked", self.delete_eventOptions, None)     
        
        self.windowAbout.connect("delete_event", self.delete_eventAbout)
        self.buttonOkAbout.connect("clicked", self.delete_eventAbout, None)


        self.buttonOkAbout.show()
        self.labelAbout3.show()
        self.labelAbout2.show()
        self.hsepAbout1.show()
        self.labelAbout1.show()
        self.vboxAbout.show()
        
        self.buttonCancelOptions.show()
        self.buttonOkOptions.show()
        self.hbOptions.show()
        self.hsepOptions3.show()
        
        self.labelOptions4.show()
        self.hboxOptions3.show()
        self.radbutOptions3.show()
        self.radbutOptions4.show()
        self.hsepOptions4.show()
        
        self.labelOptions3.show()
        self.hboxOptions2.show()
        self.radbutOptions1.show()
        self.radbutOptions2.show()
        
        self.labelOptions5.show()
        self.checkOptions1.show()
        self.checkOptions2.show()
        self.checkOptions3.show()
        self.hsepOptions5.show()
        
        self.hsepOptions2.show()
        self.sbuttonOptions.show()
        self.labelOptions2.show()
        self.hboxOptions.show()
        self.hsepOptions1.show()
        self.labelOptions1.show()
        self.vboxOptions.show()
        
        
        self.comboLanguages.show()
        
        self.buttonOptions.show()
        self.buttonTranslate.show()
        self.hbBox2.show()
        self.entryMain.show()
        self.tviewMain.show()
        self.swinMain.show()
        self.buttonAbout.show()
        self.tbuttonSwap.show()
        self.hbBox.show()
        self.vBox.show()
        self.windowMain.show()

    def main(self):


        self.checkOptions1.set_active(True) 
        self.checkOptions2.set_active(True) 
        self.checkOptions3.set_active(True) 

        objTranslate.populateCombo(self.comboLanguages,self.tbuttonSwap)
        readOptions() 

        gobject.timeout_add (1 * 500, self.timerHandler)
        self.windowMain.set_icon_from_file(execPath+"/pangles.png")
        self.labelAbout3.set_markup("<a href='http://marteq.net/pangles/'>www.marteq.net/pangles/</a>\n")
        


        gtk.main()


if __name__ == "__main__":
    objTranslate=Translate()
    
    objPanglesGUI = PanglesGUI()
    objPanglesGUI.main()

скринПоказать
Изображение
Никто не знает столько , сколько не знаю Я. :?

Аватара пользователя
ZEN
Администратор
Сообщения: 1382
Зарегистрирован: 27 сен 2012, 18:23
Темы: 217
Откуда: Украина, Одесса
Статус: Не в сети

Re: подправить скрипт онлайн переводчика

Сообщение ZEN » 05 дек 2017, 14:01

Бегло посмотрел скрипт.. Так как используется pygtk, можно повесить сигнал на изменение текста и просто заменять '\n' на пробелы... Но, ввод в коде ограничен в 300 символов. И я подозреваю, что это ограничение так же связано с переводчиками от Google/Yahoo.
бог создал труд и обезьяну
чтоб получился человек
а вот пингвина он не трогал
тот сразу вышел хорошо

Аватара пользователя
svm
Сообщения: 15
Зарегистрирован: 04 дек 2017, 15:28
Темы: 2
Откуда: Novosibirsk
Статус: Не в сети

Re: подправить скрипт онлайн переводчика

Сообщение svm » 06 дек 2017, 02:42

Но, ввод в коде ограничен в 300 символов. И я подозреваю, что это ограничение так же связано с переводчиками от Google/Yahoo.
не думаю что это связано с ограничениями google,я тоже сперва так считал,
1)по крайней мере 300 символов он перевести должен.
2)подобный переводчик S3.GoogleTranslate - справляется на ура (проблема в том,что он работает только в браузере)
вот наглядно из S3.GoogleПоказать
Изображение
Никто не знает столько , сколько не знаю Я. :?

Аватара пользователя
stalker_tk
Сообщения: 16
Зарегистрирован: 31 окт 2015, 06:42
Темы: 1
Контактная информация:
Статус: Не в сети

Re: подправить скрипт онлайн переводчика

Сообщение stalker_tk » 10 янв 2018, 01:41

Я пользуюсь https://github.com/soimort/translate-shell и скриптом, вызов которого забиндил на нужные мне клавиши.

Код: Выделить всё

#!/bin/sh
TRANS="$(trans -b -no-ansi -e google -t russian -- "$(xclip ‐primary -o)" 2>&1)"
if [ "$?" -eq 0 ]; then
   notify-send "Перевод" "$TRANS"
else
   notify-send "Ошибка" "$(echo $TRANS | sed -e 's/\x1b\[[0-9;]*m//g')"
   # Sed strips ANSI colour codes for clean output
fi

Аватара пользователя
svm
Сообщения: 15
Зарегистрирован: 04 дек 2017, 15:28
Темы: 2
Откуда: Novosibirsk
Статус: Не в сети

Re: подправить скрипт онлайн переводчика

Сообщение svm » 03 апр 2018, 18:11

stalker_tk писал(а):
10 янв 2018, 01:41
Я пользуюсь https://github.com/soimort/translate-shell и скриптом ...
вроде бы не так давно заглядывал судым,но этот ответ не увидел :shock:
translate-shell поставил из репов
с помощью вашего скрипта пытаюсь заслать в него выделенное -
получаю ошибкуПоказать

Код: Выделить всё

tput: No value for $TERM and no -T specified [ERROR] Null response. [ERROR] Oops! Something went wrong and I can't translate it for you :( [ERROR] Null response. [ERROR] Oops! Something went wrong and I can't translate it for you :( [ERROR] Null response. [ERROR] Oops! Something went wrong and I can't translate it for you :(
не совсем понятно как сконфигурыжить?нужно создать ~/.translate-shell/init.trans
и в него вписать параметр=значение ???Показать

Код: Выделить всё

PAGER=???
#Equivalent to option setting -pager.

BROWSER=palemoon
#Equivalent to option setting -browser.

PLAYER=???
# Equivalent to option setting -player.

HTTP_PROXY
#Equivalent to option setting -proxy.

USER_AGENT='Mozilla/5.0 (X11; Linux x86_64; rv:52.9) Gecko/20100101 Goanna/3.4 Firefox/52.9 PaleMoon/27.8.3'  
#Equivalent to option setting -user-agent.

HOME_LANG=ru
#Equivalent to option setting -lang.

SOURCE_LANG=en
#Equivalent to option setting -source.

TARGET_LANG=ru
#Equivalent to option setting -target.

Никто не знает столько , сколько не знаю Я. :?

Аватара пользователя
svm
Сообщения: 15
Зарегистрирован: 04 дек 2017, 15:28
Темы: 2
Откуда: Novosibirsk
Статус: Не в сети

Re: подправить скрипт онлайн переводчика

Сообщение svm » 03 апр 2018, 21:19

зы
вроде разобрался/работает,поставил версию с github 0.9.6.7
не пойму в чём разница и откуда читает конфиги :? файл один - конфиги разные
вот выхлопы trans -V обоих версий 0.9.6.7 и 0.9.2.1Показать

Код: Выделить всё

svm@svm ~ $ /home/svm/bin/translate-shell/translate -V
Translate Shell       0.9.6.7

platform              Linux
gawk (GNU Awk)        4.1.3
fribidi (GNU FriBidi) 0.19.7
audio player          mpv --no-config
terminal pager        less
terminal type         xterm
user locale           ru_RU.UTF-8 (Russian)
home language         ru
source language       auto
target language       ru
translation engine    google
proxy                 [NONE]
user-agent            Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/602.1 (KHTML, like Gecko) Version/8.0 Safari/602.1 Epiphany/3.18.2
theme                 default
init file             /home/svm/.translate-shell/init.trans

Report bugs to:       https://github.com/soimort/translate-shell/issues


svm@svm ~ $ trans -V
Translate Shell       0.9.2.1

platform              Linux
gawk (GNU Awk)        4.1.3
fribidi (GNU FriBidi) 0.19.7
audio player          mplayer
terminal pager        less
terminal type         xterm
user locale           en_US.UTF-8 (English)
home language         en
source language       auto
target language       en
proxy                 [NONE]
user-agent            Mozilla/5.0 (X11; Linux x86_64; rv:40.0) Gecko/20100101 Firefox/40.0
theme                 default
init file             /home/svm/.translate-shell/init.trans

Report bugs to:       https://github.com/soimort/translate-shell/issues

не соображу как выводить результат,чтобы можно было скопировать переведённый текст?
через notify-send нельзя выделить/скопировать
пока вывожу такПоказать
Изображение
ps
сам нагуглил ту-та

Код: Выделить всё

#!/usr/bin/env bash
    text="$(xsel -o)"
    translate="$(wget -U "Mozilla/5.0" -qO - "http://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=ru&dt=t&q=$(echo $text | sed "s/[\"'<>]//g")" | sed "s/,,,0]],,.*//g" | awk -F'"' '{print $2, $6}')"
    echo -e "Original text:" "$text"'\n' > /tmp/notitrans
    echo "Translation:" "$translate" >> /tmp/notitrans
    zenity --text-info --title="Translation" --filename=/tmp/notitrans
Никто не знает столько , сколько не знаю Я. :?

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей