Google Übersetzer
Google Übersetzer
Hallo Leute,
mit dem Senden von "https://translate.google.at/?hl=de#de/e ... Cbersetzen!" kann man von Google eine Übersetzung anfordern.
Manko dieser Methode ist, dass Sie auf die Google Page umschaltet und somit ich von meiner aktuellen Page getrennt werde. Nun möchte ich den markierten Text lediglich Übersetzt haben und nicht auf die Google Page gehen.
Habe nach diesen Problem schon gegoogelt aber bin nicht so richtig weitergekommen. Das markieren und senden ist kein Problem aus dem Webgadget heraus, aber wie erhalte ich den Übersetzen Text, damit ich Ihn einfügen kann?
Vielleicht hat jemand mit diesem Problem schon zu tun gehabt und kann mir helfen!
Gruss ... Velindos
mit dem Senden von "https://translate.google.at/?hl=de#de/e ... Cbersetzen!" kann man von Google eine Übersetzung anfordern.
Manko dieser Methode ist, dass Sie auf die Google Page umschaltet und somit ich von meiner aktuellen Page getrennt werde. Nun möchte ich den markierten Text lediglich Übersetzt haben und nicht auf die Google Page gehen.
Habe nach diesen Problem schon gegoogelt aber bin nicht so richtig weitergekommen. Das markieren und senden ist kein Problem aus dem Webgadget heraus, aber wie erhalte ich den Übersetzen Text, damit ich Ihn einfügen kann?
Vielleicht hat jemand mit diesem Problem schon zu tun gehabt und kann mir helfen!
Gruss ... Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Re: Google Übersetzer
Es gab mal direkte URLs mit Parametern um beliebige Wörter automatisiert zu übersetzen. Man hat ein XML-String bekommen, den man auswerten konnte. Aber das hat Google irgendwann festgestellt und hat dafür gesorgt, dass man das nicht mehr so einfach machen kann. Google bietet selbst den Entwicklern eine API-Schnittstelle an, aber ist leider kostenpflichtig.
Du kannst allerdings mit WebGadget die Übersetzungsseite mit Parametern laden. Nur das Problem ist, das du wahrscheinlich hast, dass du nur den Quellcode der zuerst geladenen Seite bekommst. Die Übersetzung erfolgt über Ajax und wird nachträglich in das Eingabefeld eingefügt.
Um an aktuellen und vollständigen Quellcode zu kommen, musst du nach dem Laden folgendes ausführen:
Dann hast du den vollständigen Quellcode. Anschließend musst du nur filtern und das Div-Element finden und das übersetzte Wort ermitteln. Du kannst das entweder mit RegEx machen oder manuell mit FindString() und Mid().
Du kannst allerdings mit WebGadget die Übersetzungsseite mit Parametern laden. Nur das Problem ist, das du wahrscheinlich hast, dass du nur den Quellcode der zuerst geladenen Seite bekommst. Die Übersetzung erfolgt über Ajax und wird nachträglich in das Eingabefeld eingefügt.
Um an aktuellen und vollständigen Quellcode zu kommen, musst du nach dem Laden folgendes ausführen:
Code: Alles auswählen
Procedure.s WebGadget_PageHtml(Gadget)
Protected Result$ = ""
Protected Document.IHTMLDocument3
Protected Root.IHTMLElement
Protected bstr_html
Document.IHTMLDocument3 = WebGadget_Document(Gadget, ?IID_IHTMLDocument3)
If Document
If Document\get_documentElement(@Root.IHTMLElement) = #S_OK
If Root\get_outerHTML(@bstr_html) = #S_OK And bstr_html
Result$ = PeekS(bstr_html, -1, #PB_Unicode)
SysFreeString_(bstr_html)
EndIf
Root\Release()
EndIf
Document\Release()
EndIf
ProcedureReturn Result$
EndProcedure
Re: Google Übersetzer
Kannst du mal ein einfaches Beispiel posten? Ich habe evtl eine Idee, verstehe aber vielleicht deine Frage falsch.
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE!. Kauft Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE!. Kauft Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Re: Google Übersetzer
Nachtrag: Hier noch ein vollständiges Beispiel, um den vollständigen Quellcode zu ermitteln, damit man das übersetzte Wort problemlos auslesen kann. In meinem Beispiel kann man auch gut sehen, dass das Ermitteln mit #PB_Web_HtmlCode überhaupt nicht funktioniert, wenn Ajax verwendet wird:
Code: Alles auswählen
EnableExplicit
Define CurrentDOM$
Procedure WebGadget_Document(Gadget, *IID)
Protected Document = 0
Protected Browser.IWebBrowser2
Protected DocumentDispatch.IDispatch
Browser.IWebBrowser2 = GetWindowLong_(GadgetID(Gadget), #GWL_USERDATA)
If Browser
If Browser\get_Document(@DocumentDispatch.IDispatch) = #S_OK And DocumentDispatch
DocumentDispatch\QueryInterface(*IID, @Document)
DocumentDispatch\Release()
EndIf
EndIf
ProcedureReturn Document
EndProcedure
Procedure.s WebGadget_PageHtml(Gadget)
Protected Result$ = ""
Protected Document.IHTMLDocument3
Protected Root.IHTMLElement
Protected bstr_html
Document.IHTMLDocument3 = WebGadget_Document(Gadget, ?IID_IHTMLDocument3)
If Document
If Document\get_documentElement(@Root.IHTMLElement) = #S_OK
If Root\get_outerHTML(@bstr_html) = #S_OK And bstr_html
Result$ = PeekS(bstr_html, -1, #PB_Unicode)
SysFreeString_(bstr_html)
EndIf
Root\Release()
EndIf
Document\Release()
EndIf
ProcedureReturn Result$
EndProcedure
If OpenWindow(0, 0, 0, 1024, 768, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
WebGadget(1, 0, 0, WindowWidth(0), WindowHeight(0)-40, "https://translate.google.at/?hl=de#de/en/Das%20will%20ich%20%C3%9Cbersetzen!")
ButtonGadget(2, WindowWidth(0)-210, WindowHeight(0)-30, 200, 20, "Mit WebGadget_PageHtml ermitteln", 0)
ButtonGadget(3, WindowWidth(0)-420, WindowHeight(0)-30, 200, 20, "Mit #PB_Web_HtmlCode ermitteln", 0)
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
Case 2
CurrentDOM$ = WebGadget_PageHtml(1)
If FindString(CurrentDOM$, "I will") > 0
Debug "Gefunden"
Else
Debug "Nicht gefunden"
EndIf
;Debug CurrentDOM$
Case 3
CurrentDOM$ = GetGadgetItemText(1, #PB_Web_HtmlCode)
If FindString(CurrentDOM$, "I will") > 0
Debug "Gefunden"
Else
Debug "Nicht gefunden"
EndIf
;Debug CurrentDOM$
EndSelect
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
EndIf
DataSection
IID_IHTMLDocument2: ; {332C4425-26CB-11D0-B483-00C04FD90119}
Data.l $332C4425
Data.w $26CB, $11D0
Data.b $B4, $83, $00, $C0, $4F, $D9, $01, $19
IID_IHTMLDocument3: ; {3050F485-98B5-11CF-BB82-00AA00BDCE0B}
Data.l $3050F485
Data.w $98B5, $11CF
Data.b $BB, $82, $00, $AA, $00, $BD, $CE, $0B
IID_NULL: ; {00000000-0000-0000-0000-000000000000}
Data.l $00000000
Data.w $0000, $0000
Data.b $00, $00, $00, $00, $00, $00, $00, $00
EndDataSection
Re: Google Übersetzer
Tolles Beispiel
Funzt sehr gut, ist das ein PB Bug bez. #PB_Web_HtmlCode? Und was ist Ajax? Kannst du mir das erklären? Kann damit nichts anfangen und weiss nicht was du damit meinst... Gegoogelt habe ich schon aber den Wiki Artikel verstehe ich leider nicht. 


Ich benutze Pure Basic 5.30 auf Microsoft Windows 7.
Gruß
JM
Gruß
JM
Re: Google Übersetzer
Ajax wird verwendet, um Informationen nachträglich serverseitig zu laden. Normalerweise gibt es nur diese Reihenfolge: Server-Verarbeitung (PHP, ASP, ASP.NET o.ä.)
Client-Verarbeitung (Browser (HTML, CSS, JS o.ä.)).
Wenn man aber gerne nach dem Laden der Seite erneut auf den Server zugreifen möchte, kann man Ajax verwenden, um asynchron im Hintergrund bestimmte Daten zu holen oder was in die Datenbank zu speichern, ohne die komplette Seite neuladen zu müssen.

Wenn man aber gerne nach dem Laden der Seite erneut auf den Server zugreifen möchte, kann man Ajax verwenden, um asynchron im Hintergrund bestimmte Daten zu holen oder was in die Datenbank zu speichern, ohne die komplette Seite neuladen zu müssen.
Re: Google Übersetzer
Danke du bist der beste 

Ich benutze Pure Basic 5.30 auf Microsoft Windows 7.
Gruß
JM
Gruß
JM
Re: Google Übersetzer
ich hab seine Frage leider nicht so recht verstanden. Wenn er auf seiner Seite bleiben will, kann er den Google Übersetzer doch auch per iframe inkluden.
Oder soll markierter Text kopiert und übernommen werden?
Nuja, mal sehen.
grüße
Oder soll markierter Text kopiert und übernommen werden?
Nuja, mal sehen.
grüße
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE!. Kauft Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE!. Kauft Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Re: Google Übersetzer
Hallo Leute!
Hallo RSBasic!
War gerade Einkaufen, daher hat´s länger gedauert!
RSBasic, DANKE! Für deine Einführung und dein Beispiel, das funzt!
@udg
Zu der beabsichtigten Lösung wäre zu Sagen, ich markiere den Text auf einer Page und mache per Buttondruck oder PopUp einen Translate!
Zuerst kopiere ich das markierte und anschliessend füge ich das Translate auf dessen Platz ein
(Hilft bei schwierigen Übersetzungen etc.)
Anschliessend notiere ich mir das in meinen Velindos.
Das machte ich bis dato per Google Translator, nur war das Umschalten sehr mühsam und nun werde ich Versuchen das ganze mit dem Beispiel von RSBasic umzusetzten!
Nochmals besten Dank!!!
Gruss ... Velindos
Hallo RSBasic!
War gerade Einkaufen, daher hat´s länger gedauert!
RSBasic, DANKE! Für deine Einführung und dein Beispiel, das funzt!
@udg
Also das mit der iframe, da habe ich keine Ahnung wie man das machen soll!"Wenn er auf seiner Seite bleiben will, kann er den Google Übersetzer doch auch per iframe inkluden."
Zu der beabsichtigten Lösung wäre zu Sagen, ich markiere den Text auf einer Page und mache per Buttondruck oder PopUp einen Translate!
Zuerst kopiere ich das markierte und anschliessend füge ich das Translate auf dessen Platz ein
(Hilft bei schwierigen Übersetzungen etc.)
Anschliessend notiere ich mir das in meinen Velindos.
Das machte ich bis dato per Google Translator, nur war das Umschalten sehr mühsam und nun werde ich Versuchen das ganze mit dem Beispiel von RSBasic umzusetzten!
Nochmals besten Dank!!!
Gruss ... Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Re: Google Übersetzer
<Halb-OT>
zum Übersetzen verwende ich gerne das Freeware-Tool QTranslate (https://quest-app.appspot.com/home)
Text markieren und zwei Mal <Strg> drücken und schon erscheint die Übersetzung.
Unterstützt viele Sprachen und mehrere Übersetzungs-Dienste.
</Halb-OT>
zum Übersetzen verwende ich gerne das Freeware-Tool QTranslate (https://quest-app.appspot.com/home)
Text markieren und zwei Mal <Strg> drücken und schon erscheint die Übersetzung.
Unterstützt viele Sprachen und mehrere Übersetzungs-Dienste.
</Halb-OT>
a²+b²=mc²