![]() |
Texte mit Google übersetzen
Liste der Anhänge anzeigen (Anzahl: 1)
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:
Beispielaufrufe:
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;
Delphi-Quellcode:
//Deutsch zu Englisch
Memo2.Text := Übersetzung(Memo1.Text, 0); //Englisch zu Deutsch Memo2.Text := Übersetzung(Memo1.Text, 1); |
Re: Texte mit Google übersetzen
Sicher das Google das automatisierte Nutzen seines Services auf dieser Art gestattet?
|
Re: Texte mit Google übersetzen
da gibt es doch die Google Ajax translate api, damit sollte es eigentlich einfacher funktionieren. Marco Canto hat doch mal bei einer genialen Demonstration dies vorgeführt.
Habe jetzt bei einer kurzen Recherche nur folgenden Link gefunden: ![]() |
Re: Texte mit Google übersetzen
Delphi-Quellcode:
if i = 0 then t := t + '+%0D%0A&sl=de&tl=en';
if i = 1 then t := t + '+%0D%0A&sl=en&tl=de'; r := Idhttp1.Get('http://translate.google.de/translate_t?hl=&ie=UTF-8&text=' + t); |
Re: Texte mit Google übersetzen
Die Sprachauswahl ließe sich noch umschreiben:
Delphi-Quellcode:
const
Languages: array[0..1] of string = ('en', 'de'); function Uebersetzung(const Ausgangstext, sl, tl: string): string; begin ... //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#'); r := IdHttp1.Get('http://translate.google.de/translate_t?hl=&ie=UTF-8&text=' + t + '+%0D%0A&sl='+sl+'&tl='+tl); ... end; ... Foo := Uebersetzung('Bar','de','en'); // Übersetze 'Bar' von Deutsch nach Englisch Fuu := Uebersetzung(Foo,Languages[0],Languages[1]); // und wieder zurück |
Re: Texte mit Google übersetzen
T ist aber der Ausgangstext.
|
Re: Texte mit Google übersetzen
Hallo,
ab welcher Version geht denn so was function Übersetzung(const Ausgangstext: string; i: integer): string; bei mir würde Delphi meckern : [Error] ... Illegal character in input file: 'Ü' ($DC) :gruebel: |
Re: Texte mit Google übersetzen
Zitat:
|
Re: Texte mit Google übersetzen
@himitsu : danke für die Erleuchtung :party:
|
AW: Texte mit Google übersetzen
Das wollte ich gerade mal ausprobieren.
Man muss das HTTP durch einen SSL-IO-Handler ergänzen, damit es überhaupt läuft (da jetzt https-Adresse). Bei einem Verbindungstest musste ich noch das HandleReditrects aktivieren, um den "HTTP/1.1 301 Moved Permanently" Fehler zu vermeiden. Insgesamt funktioniert es aber nicht (Keine Fehlermeldung, wird einfach nichts zurückgeliefert). Kennt jemand eine einfach funktionierende Lösung über diesen HPPT-Aufruf? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz