AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Texte mit Google übersetzen
Thema durchsuchen
Ansicht
Themen-Optionen

Texte mit Google übersetzen

Ein Thema von Larsi · begonnen am 15. Feb 2010 · letzter Beitrag vom 23. Mär 2015
Antwort Antwort
Seite 1 von 3  1 23      
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, 114x aufgerufen)
Ein Tag ohne Delphi ist ein verlorener Tag!

Homepage zu meinem neuen Programm: StreamZ

Geändert von Larsi (14. Nov 2019 um 12:17 Uhr)
 
Balu der Bär
 
#2
  Alt 15. Feb 2010, 15:43
Sicher das Google das automatisierte Nutzen seines Services auf dieser Art gestattet?
  Mit Zitat antworten Zitat
fatalerror
 
#3
  Alt 15. Feb 2010, 15:44
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: Marco Cantu Translate
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#4
  Alt 15. Feb 2010, 15:49
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);
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

 
FreePascal / Lazarus
 
#5
  Alt 15. Feb 2010, 16:00
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
Marvin
  Mit Zitat antworten Zitat
Larsi

 
Delphi 2007 Professional
 
#6
  Alt 15. Feb 2010, 16:01
T ist aber der Ausgangstext.
  Mit Zitat antworten Zitat
Benutzerbild von markus5766h
markus5766h

 
Delphi XE8 Professional
 
#7
  Alt 15. Feb 2010, 16:25
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)
Markus H.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#8
  Alt 15. Feb 2010, 16:32
Zitat von markus5766h:
ab welcher Version geht denn so was
ab TurboDelphi
  Mit Zitat antworten Zitat
Benutzerbild von markus5766h
markus5766h

 
Delphi XE8 Professional
 
#9
  Alt 15. Feb 2010, 16:43
@himitsu : danke für die Erleuchtung
Markus H.
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

 
Delphi 11 Alexandria
 
#10
  Alt 23. Mär 2015, 07:55
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?
Harry Stahl
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 21:54 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