Hallo. Es ist wunderbar zu sagen, dass ich Englisch gelernt habe, weil mein Englisch schwach ist. In meinem Fall: "Ich bin schwach in Englisch, also habe ich mir überlegt, wie ich dem Englischen entkommen kann." Deshalb habe ich es geschafft. (Abrupt) ** Für diejenigen, die "den Quellcode schnell kopieren und einfügen möchten" oder nach einer technischen Story suchen Es ist Zeit für eine technische Story % 81% 9D% E3% 82% 8D% E3% 81% 9D% E3% 82% 8D% E6% 8A% 80% E8% A1% 93% E7% 9A% 84% E3% 81% AA% E8% A9 Bitte gehen Sie zu% B1)! ** ** ** ** Wenn Sie es eilig haben, können Sie win10 (64 Bit) unter Anhang: Einfaches Installationsprogramm (.bat) verwenden E9% 8C% B2win10-64bit% E7% 94% A8% E7% B0% A1% E6% 98% 93% E3% 82% A4% E3% 83% B3% E3% 82% B9% E3% 83% 88% Wenn Sie E3% 83% BC% E3% 83% A9) verwenden, können Sie es in ca. 10 Minuten installieren. ** ** **
Voraussetzung ist, dass Python 3.X installiert ist. Weitere Informationen finden Sie unter Herunterladen und Installieren von Python 3.7.3 - Programmieren starten. Bitte versuchen Sie es vorzustellen. Natürlich muss es nicht 3.7.3 sein. Es muss nicht die neueste Version sein.
Ich kommuniziere mit Geschäftspartnern in Übersee auf Englisch. Mit anderen Worten, es gibt relativ viele Möglichkeiten, auf Englisch zu kommunizieren, nicht nur per E-Mail. Was passiert jedoch, wenn Sie einen Mann, der kein Englisch spricht, bitten, auf Englisch zu kommunizieren? Ja, Sie müssen sich auf die Google-Übersetzung verlassen. Sie werden in der Lage sein, so etwas zu tun.
1.Denken Sie an den Inhalt auf Japanisch
2.Zu Google Translate werfen
3.Englisch lernen
4.Übersetzen Sie den englischen Text, den Sie bei Google erhalten haben, erneut
5.Untersuchung der erneut übersetzten Japaner
→ Wenn zwischen dem Originaltext und der Bedeutung eine Diskrepanz besteht, kehren Sie zu 1 zurück und überarbeiten Sie den Text nach Bedarf.
** Ist das nicht unmöglich? ?? ** ** ** Es ist wirklich nervig. Nein, ich spreche davon, Englisch sprechen zu können. Wenn Sie nicht gut Englisch können, haben Sie keine andere Wahl, als diese Arbeit zu erledigen. Gilt das nicht besonders für Menschen in den Vierzigern und Fünfzigern, die plötzlich Englisch sprechen müssen?
Vielleicht, weil es Zeit braucht, sollen die Überstunden der Abteilung doerai sein, also habe ich es geschafft.
Wenn Sie diese Übersetzung mit der in die Zwischenablage kopierten japanischen Eingabe beginnen, wird sie durch "." In Sätze unterteilt. ~~ Am Ende des Satzes und übersetzt. ** 8/3 aktualisiert: Trennzeichen in Zeilenumbruch geändert. ** Wenn die Übersetzung abgeschlossen ist, können Sie die Taste drücken und das übersetzte Englisch in die Zwischenablage kopieren. Unten finden Sie einen Screenshot der Anweisungen und Testvoreinstellungen beim ersten Start.
** Es sieht völlig abgenutzt aus. ** Besonders die unteren drei Tasten sind schrecklich. Ich konnte so etwas nur machen, weil ich nicht genug technische Fähigkeiten hatte. Ich habe die GUI zum ersten Mal mit wxpython entworfen, also Bitte verzeih mir Sai,
Vielen Dank, dass Sie bisher bei uns geblieben sind. Im Folgenden wird der Code zur Einführung vorgestellt, während die Umgebung angezeigt wird.
win10 64bit ** python3.8.4 ** Angenommen, der Python-Pfad ist vorhanden Nur das. Wenn Sie die 32-Bit-Version von win10 verwenden, lesen Sie diese bitte gut durch und fahren Sie mit der Einführung fort.
Installieren Sie in dieser Umgebung einen Browser namens Chromium und installieren Sie ein Paket, um damit umzugehen.
Starten Sie die Eingabeaufforderung und drücken Sie den folgenden Befehl.
pip install chromedriver_binary==84.0.4147.30.0
pip install wxpython
pip install pyperclip
pip install selenium
pip install beautifulsoup4
Ich denke, es wird unerwartet bald enden.
Offizielle Website für Chromium für Win10 64bit DL aus Medien) und dekomprimieren. Wahrscheinlich wird ein Ordner namens "chrome-win" erstellt. Verschieben Sie ihn also direkt unter "C: \ Programme". Wenn Sie es verschieben können, ist Chromium bereit. Wenn Sie nicht Win10 64bit sind und aus dem offiziellen Repository herunterladen möchten, stellen Sie bitte sicher, dass die Chromium-Version "84.0.4147.0" ist. Genau genommen sollte die Hauptversion 84 sein, aber ich habe die Operation nicht bestätigt, also ...
Es ist ein Open-Source-Webbrowser und die Basis von Google Chrome, wie Sie anhand des folgenden Symbols sehen können. Außerdem werden Opera und Microsoft Edge ab Juli 2020 auf Chromium-Basis entwickelt.
-Wikipwdia Der Name des Chrom-Projekts leitet sich vom Metallelement Chrom (Chrom in Englisch) ab, das bekanntermaßen zum Beschichten von Eisen und dergleichen verwendet wird. Da das verchromte Metall auf Englisch Chrom genannt wird, kam es zu diesem Namen im Sinne von "Dinge, die zur Herstellung von (Google) Chrome verwendet wurden".
Im Bereich des täglichen Gebrauchs fühlt es sich jedoch fast wie Google Chrome an, und Sie können Chromium verwenden, ohne tief darüber nachzudenken (zumindest für mich).
Die folgenden drei Punkte dienen dazu, Chromium als kontrollierten Browser anstelle von Google Chrome auszuwählen.
Erstens sind in Bezug auf 1 nicht nur Browser, sondern auch Apps ohne automatische Updates unpraktisch, da sie verschiedene Einschränkungen aufweisen, einschließlich Sicherheitsproblemen. In dieser Anwendung ist es jedoch ziemlich vorteilhaft, weil es notwendig ist, "die Hauptversion des Treibers und der Anwendung abzugleichen". Außerdem wird es diesmal im Headless-Modus gestartet. In diesem Fall erkennt der Benutzer es jedoch eher als "nur eine Hintergrund-App", sodass Chromium nicht absichtlich eine Verbindung zum Web herstellt. Mit anderen Worten, es gibt fast keine Bedenken hinsichtlich der Sicherheit (natürlich ist es nicht Null).
In Bezug auf 2 sollte dieser Übersetzungs-Chan ursprünglich innerhalb der Abteilung bereitgestellt werden, daher bestand die Möglichkeit, dass "Unannehmlichkeiten auftreten würden, wenn der normalerweise verwendete Browser gesteuert wird". Ich bin nicht sehr gut in Browsern, deshalb wollte ich IE, MS Edge, Google Chrome, FireFox, Opera und Sleipnir für alle Fälle vermeiden.
In Bezug auf ** 3 ist dies ehrlich gesagt der größte Entwickler. ** Da es mit demselben Treiber wie Google Chrome funktioniert, war es einfach, es mit Google Chrome zu entwickeln und mit Chromium → Test in einer Situation nahe der Produktionsumgebung zu implementieren. Es geht hoch.
Deshalb war Chrom so praktisch.
Es ist schließlich der Quellcode des Hauptteils. Übersetzen Sie das oben installierte Chrom mit der Kontrolle von Selen.
import wx
import wx.lib.scrolledpanel
import pyperclip
import time
import urllib.parse
import chromedriver_binary
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from bs4 import BeautifulSoup
from time import sleep
class Translator: #Klasse, die die Übersetzung durch Selen definiert
def __init__(self):
self.options = Options()
self.options.binary_location = "C:\\Program Files\\chrome-win\\chrome.exe"
self.options.add_argument("--headless") #Starten Sie im Headless-Modus
self.browser = webdriver.Chrome(options=self.options)
#self.browser.minimize_window() #Wenn der Proxy aktiviert ist, minimieren Sie ihn.
self.browser.implicitly_wait(2)
def trans(self, txt , lg1 , lg2): #Funktion zum Übersetzen von lg1 nach lg2
if txt == "": #Gibt leer zurück, wenn die Eingabe leer ist
return txt
#Zugriff nach dem Einbetten des Satzes, den Sie übersetzen möchten, in die URL
text_for_url = urllib.parse.quote_plus(txt, safe='')
url = "https://translate.google.co.jp/#{1}/{2}/{0}".format(text_for_url , lg1 , lg2)
self.browser.get(url)
#warten Sie ein wenig
wait_time = len(txt) / 1000
if wait_time < 0.5:
wait_time = 0.5
time.sleep(wait_time)
#Übersetzungsergebnisse extrahieren
soup = BeautifulSoup(self.browser.page_source, "html.parser")
ret = soup.find(class_="tlid-translation translation")
return ret.text
def quit(self):
self.browser.quit()
def main():
#Holen Sie sich den Inhalt der Zwischenablage
orig = str(pyperclip.paste())
#Erkennt Brüche und Risse. Zu diesem Zeitpunkt Zeilenumbruchinformationen"\r\n"Wird verloren sein
orignal_elements = orig.splitlines()
print(orignal_elements)
#Variable, die Zeichenfolgen im Zusammenhang mit der Übersetzung speichert
origs = []
en_txt = []
jp_txt = []
#Globale Variable, um eine leere Zeile zu erhalten
global blank_row
blank_row = []
count = 0
while count < len(orignal_elements):
buf = orignal_elements[count] #" "Beseitigen Sie nur leere Elemente wie
buf = buf.replace(" " , "") #Da es nicht möglich ist, einer Fremdsprache einfach durch Löschen des Leerzeichens zu entsprechen, nehmen Sie den Unterschied
if buf != "": #Wenn es nicht leer ist, fügen Sie es dem Übersetzungsziel hinzu
origs.append(orignal_elements[count])
else:
blank_row.append(count) #Wenn es leer ist, war es ursprünglich eine leere Zeile, also ermitteln Sie die Position des Elements mit int
count += 1
#Stellen Sie 2 zu übersetzende Sprachen ein[Heimatsprache,Fremdsprache]Wir planen, es so zu erstellen, dass die Sprache in Zukunft aus dem Pulldown-Menü ausgewählt werden kann.
global lg
lg = ["ja" , "en"]
#Stellen Sie zwei Sprachen für die umgekehrte Übersetzung ein[Fremdsprache,japanisch]
global rev_lg
rev_lg = list(reversed(lg))
#GUI-Vorbereitung
app = wx.App()
#Anzeige während des Ladens
read_frame = wx.Frame(None, wx.ID_ANY, "In der Übersetzung...", size=(250,0))
read_frame.Centre() #Wird in der Mitte angezeigt
read_frame.Show()
global rows
rows = len(origs) #Beachten Sie die Anzahl der Zeilen, da len 0 enthält
for row in range(rows): #Übersetzen Sie zuerst basierend auf dem Originaltext
#Original
txt = origs[row]
#print("Original:",txt)
#Englisch
en_txt.append(translator.trans(origs[row], *lg))
#print("Englisch:",en_txt)
#Neuübersetzung
jp_txt.append(translator.trans(en_txt[row], *rev_lg))
size = (900,600)
global frame
frame = wx.Frame(None, wx.ID_ANY, 'Übersetzungs-Chan', size=size)
panel = wx.lib.scrolledpanel.ScrolledPanel(frame,-1, size=size, pos=(0,28), style=wx.SIMPLE_BORDER)
panel.SetupScrolling()
panel.SetBackgroundColour('#AFAFAF')
global text
global en_text
global jp_text
global btn
layout = wx.FlexGridSizer(rows+1,4,0,0)
text = [""]*rows #Vorbereiten des Originaltext-Widgets
en_text = [""]*rows #Vorbereiten des englischen Text-Widgets
jp_text = [""]*rows #Vorbereitung des Text-Widgets zur erneuten Übersetzung
btn = [""]*rows #Vorbereiten des Widgets für die Übersetzungsschaltfläche
cellsize = (270,90)
for row in range(rows):
#Original
txt = origs[row]
text[row] = wx.TextCtrl(panel, row , txt, style = wx.TE_MULTILINE,size=cellsize)
#print("Original:",txt)
#Englisch
en_text[row] = wx.TextCtrl(panel, row , en_txt[row], style = wx.TE_MULTILINE,size=cellsize)
en_text[row].Disable() #Schreibgeschützt
#print("Englisch:",en_txt)
#Neuübersetzung
jp_text[row] = wx.TextCtrl(panel, row , jp_txt[row], style = wx.TE_MULTILINE,size=cellsize)
jp_text[row].Disable() #Schreibgeschützt
#print("Neuübersetzung:",jp_txt)
#Schaltfläche "Übersetzen"
btn[row] = wx.Button(panel, row, "Übersetzung", size=(60, 40))
btn[row].Bind(wx.EVT_BUTTON, OnClickBtn) #Schaltfläche an Ereignis binden
#Anordnung von Widgets
#layout.Add(text[row], flag=wx.ALIGN_LEFT | wx.GROW) #Original
layout.Add(text[row], flag=wx.SHAPED) #Original
layout.Add(jp_text[row], flag=wx.SHAPED) #Neuübersetzung
layout.Add(en_text[row], flag=wx.SHAPED) #Englisch
layout.Add(btn[row],flag=wx.SHAPED |
wx.ALIGN_CENTER_VERTICAL | wx.TE_MULTILINE) #Schaltfläche "Übersetzen"
copy_btn = wx.Button(panel, wx.ID_ANY, "Übersetzung abgeschlossen", size=(80, 40))
copy_btn.Bind(wx.EVT_BUTTON, OnClickCopyBtn)
layout.Add(copy_btn,flag=wx.SHAPED |
wx.ALIGN_CENTER_VERTICAL | wx.TE_MULTILINE)
retrans_btn = wx.Button(panel, wx.ID_ANY, "Setzen Sie jede Zelle zurück und übersetzen Sie sie erneut", size=(200, 40))
retrans_btn.Bind(wx.EVT_BUTTON, OnClickRetransBtn)
layout.Add(retrans_btn,flag=wx.SHAPED |
wx.ALIGN_CENTER_VERTICAL | wx.TE_MULTILINE)
exit_btn = wx.Button(panel, wx.ID_ANY, "Beenden Sie die Übersetzung", size=(120, 40))
exit_btn.Bind(wx.EVT_BUTTON, OnClickExitBtn)
layout.Add(exit_btn,flag=wx.SHAPED |
wx.ALIGN_CENTER_VERTICAL | wx.TE_MULTILINE)
#Platzierung der Tasten
layout.AddGrowableCol(0, 3)
layout.AddGrowableCol(1, 3)
layout.AddGrowableCol(2, 3)
layout.AddGrowableCol(3, 1)
#Layout-Update
panel.SetSizer(layout)
#Statusleiste definieren
frame.CreateStatusBar()
frame.SetStatusText("Bitte beachten Sie die Vertraulichkeitsverpflichtung, bevor Sie den Onlinedienst nutzen.")
read_frame.Close()
frame.Centre() #Wird in der Mitte angezeigt
frame.Show()
app.MainLoop()
def OnClickBtn(event):
num = event.GetId()
btn[num].Disable()
n_txt = text[num].GetValue()
n_en_txt = translator.trans(n_txt, *lg)
n_jp_txt = translator.trans(n_en_txt, *rev_lg)
en_text[num].SetValue(n_en_txt)
jp_text[num].SetValue(n_jp_txt)
btn[num].Enable()
def copy_all(): #Eine Funktion, die den englischen Text des Übersetzungsergebnisses in die Zwischenablage kopiert
fin_txt = "" #Zeichenfolge zum Kopieren in die Zwischenablage
fin_txts = [] #Eine Zeichenfolge, in der der übersetzte englische Text für jede Zelle gespeichert wird
for row in range(rows):
fin_txts.append(en_text[row].GetValue()+"\r\n") #Stellen Sie verlorene Zeilenumbruchinformationen mit der Splitlines-Methode wieder her
for blank in blank_row:
fin_txts.insert(blank,"\r\n") #Die Position der leeren Zeile ist leer_Fügen Sie eine leere Zeile hinzu, da sie in einer Zeile gespeichert ist
for element in fin_txts:
fin_txt += element #Da die Zeilenvorschubinformationen wiederhergestellt wurden, werden sie als Ausgabezeichenfolge kombiniert.
return fin_txt
def OnClickCopyBtn(event): #Wenn die Taste [Übersetzung abgeschlossen] gedrückt wird
pyperclip.copy(copy_all())
def OnClickRetransBtn(event): #Wenn die Taste [Jede Zelle zurücksetzen und erneut übersetzen] gedrückt wird
frame.Close()
main()
def OnClickExitBtn(event): #Wenn die Taste [Übersetzung beenden] gedrückt wird
pyperclip.copy(copy_all())
frame.Close()
translator.quit()
if __name__ == "__main__":
translator=Translator()
main()
Speichern Sie dies als Python-Skriptdatei (.py) mit einem geeigneten Namen. Klicken Sie mit der rechten Maustaste und führen Sie dies aus, um Translation-chan zu starten. Beginnen Sie mit einer Kopie des entsprechenden Japaners in der Zwischenablage.
In Bezug auf Selen [Python] Selenium-Verwendungsprotokoll (@ motoki1990) Alle automatischen Operationen von Chrome mit Python + Selen (@ mekakura),
In Bezug auf die Verwendung von wxpthon Versuchen Sie es mit wxPython (@ Kenta-Han),
In Bezug auf die automatische Übersetzung Automatisierung der Google-Übersetzung mit Selen - Haruko Ameyomi,
Ich bezog mich auf jeden. Ich habe es in Kombination angeordnet, aber da es sich um einen Code handelt, der durch Eilarbeit erstellt wurde, finde ich, dass er auf verschiedene Weise strukturell seltsam ist. Besonders die Struktur um die Hauptfunktion ist verdächtig. Ist es nicht verdächtig? Ursprünglich wurde es hauptsächlich im Klartext erstellt, daher gibt es einen Teil, der in Eile globalisiert wurde, damit er funktioniert. Das Seltsame hier ist, dass ich noch Anfänger bin und auf einen Professor von einem Experten warte.
Auch für die wundervolle Person, die diese Übersetzung stark nutzt, werde ich Ihnen sagen, dass es möglich ist, sie mit einem Hotkey (Tastenkürzel) zu starten. Bitte versuchen Sie es hier zu erstellen. Sie müssen diesbezüglich nichts Neues installieren. Erstellen Sie eine Verknüpfung für das Python-Programm (Windows 10)-@ Odanny
In zukünftigen Updates planen wir, nicht nur Englisch, sondern auch andere Sprachen zu unterstützen. Daher werden wir mit dem Lernen fortfahren, damit es mit einer Funktion behandelt werden kann.
Abschließend möchte ich ein einfaches Installationsprogramm vorstellen. ** Stellen Sie sicher, dass Sie mit Administratorrechten ausführen **
@echo off
Überprüfen Sie die Rem-Zeichencodierung
chcp 65001
setlocal
start https://www.googleapis.com/download/storage/v1/b/chromium-browser-snapshots/o/Win_x64%%2F768952%%2Fchrome-win.zip?generation=1589490546798193^&alt=media
Wenn Echo DL abgeschlossen ist[Enter]drücken Sie die Taste&& pause
Powershell -command "Expand-Archive -Path $env:USERPROFILE\Downloads\Win_x64_768952_chrome-win.zip -DestinationPath C:\Program` Files"
del %USERPROFILE%\Downloads\Win_x64_768952_chrome-win.zip
py -m pip install chromedriver_binary==84.0.4147.30.0
py -m pip install wxpython
py -m pip install pyperclip
py -m pip install selenium
py -m pip install beautifulsoup4
endlocal
exit
Alles ist in Ordnung, speichern Sie es als Batch-Datei (.bat) und führen Sie es mit ** Administratorrechten aus. ** ** **
Diese Übersetzung hat viele Funktionsmängel. Derzeit planen wir die Implementierung der folgenden Funktionen.
Dies ist ein sehr hilfreicher Artikel, den ich schon oft besucht habe. Wir möchten diese Gelegenheit nutzen, um Ihnen zu danken. Wenn es ein Problem mit diesem Artikel gibt, werden wir es sofort löschen.
・ [Python] Selenium-Verwendungsprotokoll-@ motoki1990 ・ Alle automatischen Vorgänge von Chrome mit Python + Selen-@ mekakura ・ Versuchen Sie es mit wxPython-@ Kenta-Han ・ Automatisierung der Google-Übersetzung mit Selen - Haruko Ameyomi
Es ist in Ordnung, wenn Sie es kopieren, also hoffe ich, dass sich verschiedene Leute für Python interessieren.
7/29
Quellcode aktualisieren
・ Beschleunigung des Betriebs ・ Unterstützt die Aufbewahrung von Zeilenvorschubinformationen → Ändern Sie das Trennzeichen entsprechend (Interpunktion → Zeilenumbruch) Es wurde im Quellcode wiedergegeben.
Da ich die Spezifikationen geändert habe, habe ich das Bild von Translate-chan (ein Bild wie ein Bodensatz) aktualisiert.
Recommended Posts