AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Texte mit Google übersetzen

Texte mit Google übersetzen

Ein Thema von Larsi · begonnen am 15. Feb 2010 · letzter Beitrag vom 23. Mär 2015
Antwort Antwort
Seite 2 von 3     12 3   
Larsi
Registriert seit: 10. Feb 2007
Hi,
ich habe mal ein Beispiel programmiert, wie man in Delphi mithilfe des Google Übersetzungs Service Texte übersetzen kann. Hierfür wird der Quelltext der Url, in welcher der zu übersetzende Text steht ausgelesen, und die Übersetzung extrahiert. Bis jetzt kann man nur DE > EN oder EN > DE übersetzen aber das zu erweitern, stellt ja keine Schwierigkeit dar. Indys werden benötigt. Sobald Google den HTML Code ändert, geht das natürlich nicht mehr, lässt sich aber einfach abändern. Hier der Code der eigentlichen Funktion:

Delphi-Quellcode:
uses IdHttp;

function Übersetzung(const Ausgangstext: string; i: integer): string;
var
a : Integer;
x : Integer;
t: string;
r: string;
idhttp1: TIdHttp;
begin
//Umlaute, Zeilenumbrüche, Leerzeichen ersetzen
Idhttp1 := TidHttp.Create();
t := StringReplace(Ausgangstext, ' ', '+',[rfReplaceAll, rfIgnoreCase]);
t := StringReplace(t, 'ä', 'ae', [rfReplaceAll, rfIgnoreCase]);
t:= StringReplace(t, 'ö', 'oe', [rfReplaceAll, rfIgnoreCase]);
t := StringReplace(t, 'ü', 'ue', [rfReplaceAll, rfIgnoreCase]);
t := StringReplace(t, #13#10, '', [rfReplaceAll, rfIgnoreCase]);
//Deutsch > Englisch oder Englisch > Deutsch
if i = 0 then
r := Idhttp1.Get('http://translate.google.de/translate_t?hl=&ie=UTF-8&text=' + t + '+%0D%0A&sl=de&tl=en#');
if i = 1 then
r := Idhttp1.Get('http://translate.google.de/translate_t?hl=&ie=UTF-8&text=' + t + '+%0D%0A&sl=en&tl=de#');
//Text im Quellcode, der vor der Übersetzung steht
x := Pos('gtrans value="', r);
//Text im Quellcode, der nach der Übersetzung steht
a := Pos('<br>">', r);
//Text zwischen Anfangs- und Endtext auslesen
Result := Copy(r, x + 14, a - x - 14);
end;
Beispielaufrufe:

Delphi-Quellcode:
//Deutsch zu Englisch
Memo2.Text := Übersetzung(Memo1.Text, 0);

//Englisch zu Deutsch
Memo2.Text := Übersetzung(Memo1.Text, 1);
Angehängte Dateien
Dateityp: rar _bersetzer_851.rar (244,6 KB, 112x aufgerufen)
Ein Tag ohne Delphi ist ein verlorener Tag!

Homepage zu meinem neuen Programm: StreamZ

Geändert von Larsi (14. Nov 2019 um 11:17 Uhr)
 
Benutzerbild von uligerhardt
uligerhardt

 
Delphi 2007 Professional
 
#11
  Alt 23. Mär 2015, 07:48
Hallo,

ich hab's grad mal über den Browser ausprobiert und https://translate.google.de/#de/en/Hallo als URL gekriegt. Vielleicht funktioniert's ja damit?
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

 
Delphi 10 Seattle Enterprise
 
#12
  Alt 23. Mär 2015, 08:26
Google stellt eine kostenpflichtige API für solche Anwendungsfälle bereit.

Ob das Verwenden des kostenlosen Web-Dienstes in dieser Art zulässig ist vermag ich nicht zu sagen (habe da aber so meine Zweifel).

So ein Web-Dienst unterliegt auch einer gewissen Dynamik, so dass man gezwungen ist, die Auswertung der HTML-Seite dieser Dynamik auch entsprechend folgen zu lassen.

Die Auswertung der HTML-Seite mit Pos und Konsorten ist im Übrigen nicht der Weg, den man wählen sollte. Dazu bietet sich IHTMLDocument(n) an.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

 
Delphi 10.2 Tokyo Professional
 
#13
  Alt 23. Mär 2015, 08:38
Die Auswertung der HTML-Seite mit Pos und Konsorten ist im Übrigen nicht der Weg, den man wählen sollte. Dazu bietet sich IHTMLDocument(n) an.
Schau dir mal den Quelltext von ein paar Google Seiten an. Egal ob translate oder die normale Suche. Da ist weder über pos noch über IHTMLDocument was machbar.
Michael
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

 
Delphi 10 Seattle Enterprise
 
#14
  Alt 23. Mär 2015, 08:45
Die Auswertung der HTML-Seite mit Pos und Konsorten ist im Übrigen nicht der Weg, den man wählen sollte. Dazu bietet sich IHTMLDocument(n) an.
Schau dir mal den Quelltext von ein paar Google Seiten an. Egal ob translate oder die normale Suche. Da ist weder über pos noch über IHTMLDocument was machbar.
Ok, ich hätte wohl besser schreiben sollen "einer HTML-Seite", da diese Aussage allgemein sein sollte. Denn wenn das Auslesen der Google-Seite so wie hier gezeigt gegen die Bestimmungen von Google verstösst, dann verstösst auch jeder konkrete Hinweis der Umgehung gegen die Forenregeln hier
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

 
Delphi 11 Alexandria
 
#15
  Alt 23. Mär 2015, 08:54
Ich mache das jetzt über eine Browser-Komponente (TWebrowser), rufe also die URL mit dem Text darin auf. Somit nutze ich doch einen Browser, um den Text anzuzeigen und mir in die Zwischenablage zu kopieren.

Der Unterschied ist, dass ich nicht per Drag & Drop von meiner Textvearbeitung die Texte zum Google-Fenster hin und zurück ziehen muss. Die Google Seite wird da ja auch vollständig angezeigt, wüsste nicht, was bei diesem Weg gegen die Verwendung sprechen sollte (zumindest wenn ich das privat nutze. Wenn ich das kommerziell in mein Programm einbaue, könnte das natürlich noch etwas anders sein).

Na, werde mal ein wenig forschen, ob das erlaubt ist.

Derzeit funktioniert es ganz gut, nur beim ersten Mal erhalte ich als Fehlermeldung "Die Eigenschaft " eines undefinierten oder Nullverweises kann nicht gelöscht werden" (siehe Anlage).

Bei weiteren Aufrufen (ich zerstöre das Formular nicht, sondern lasse es im Hintergrund leben), kommt der Fehler dann nicht mehr. Eine Idee, woran das liegen könnte?
Miniaturansicht angehängter Grafiken
error.jpg  
Harry Stahl
  Mit Zitat antworten Zitat
Benutzerbild von blondervolker
blondervolker

 
Delphi XE2 Architect
 
#16
  Alt 23. Mär 2015, 09:02
Morgen,Morgen,

bei Meldungen habe ich:

Webbrowser1.Silent := true;
www.bewerbungsmaker.de
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#17
  Alt 23. Mär 2015, 09:08
Nein, es ist natürlich nicht erlaubt, die Webseite für automatische Übersetzungen zu benutzen.
Google blendet sogar ein Captcha ein, wenn deren Heuristik die Verwendung eines "Bots" vermutet.
https://cloud.google.com/translate/

PS: Bezüglich einer stetigen Veränderung und TWebBrowser: http://www.delphipraxis.net/184324-d...s-browser.html

Geändert von himitsu (23. Mär 2015 um 09:20 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

 
Delphi 11 Alexandria
 
#18
  Alt 23. Mär 2015, 09:12
Super, Silent unterdrückt die Meldung.

Kann man hier auch irgendwie die Übergabe von Leerzeilen berücksichtigen? Wenn ich per Drag und Drop zum Browser rüberziehe, bleiben die natürlich auch bei der Übersetzung erhalten. Aber wie übergibt man die Zeile mit Leerzeilen an den Browser (Webrwoser.navivate (URL))?
Harry Stahl
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

 
Delphi 11 Alexandria
 
#20
  Alt 23. Mär 2015, 10:05
Danke. Habe hier leider bei den Übergabeparametern keinen Eintrag für Zeilenumbruch bei normalen Text gefunden. Alternativ könnte man überlegen, den Text als HTML-Text zu übergeben (dann müsste man "?Format=html" oder ähnliches in der Übergabezeile ergänzen.
Harry Stahl
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz