Google Translate über Java ansprechen?

M

Mc Noise

Gast
HI Leute,

Ich würde gerne Google Translate über Java ansprechen, das heißt ich möchte einen String übergeben können und die Übersetzung dann als Rückgabewert bekommen. Ganz wichtig ist, das ich keine externen APIs verwenden möchte, was heißt, dass ich alles alleine schreiben muss/will :D

Leider habe ich keine Ahnung wie man da ran gehen könnte, und das Kapitel über Netzwerkprogrammierung beim Galileo OpenBook hat mich auch nciht weitergebracht.

Ich hoffe ihr könnt mir irgendwie helfen. Danke!
 

eRaaaa

Top Contributor
Du willst Google Translate über Java nutzen aber ohne externe API ? ???:L
Naja, mit der API wäre das sicherlich alles etwas einfacher, aber ganz ohne wäre eine Idee evtl .so etwas:

Java:
		String german = "hallo%20welt"; //suchstring leerzeichen durch %20 ersetzen!
		Scanner sc = new Scanner(new URL("http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&langpair=de|en&q="+ german).openStream()); //de|en = deutsch --> englisch
		String tmp = sc.nextLine(); //hier kommt ein json string zurück

in tmp würde jetzt ein JSON String stehen. Auch hier wäre es vom Vorteil eine JSON-Lib zu nutzen, aber wenn du da auch ganz ohne Lib auskommen willst, musste den String halt selbst irgendwie auseinander nehmen, evtl. mit Regex!
Oder ganz häßlich mit substring so ^^:
Java:
		String english = tmp.substring(tmp.indexOf("translatedText\":\"")+17, tmp.indexOf("\"responseDetails")-4);
		System.out.println(english);

:D

Gibts einen Grund wieso du die google translate api nicht nutzen willst?
 

XHelp

Top Contributor
Ich habe keine Ahnung, ob es nicht sowas wie GoogleTranslateAPI gibt, aber im notfall, kannst du einfach eine http Anfrage schicken und die Seite dann parsen, z.B.:

Code:
http://translate.google.com/?sl=en&tl=de&text=Just%20a%20simple%20test

Die Übersetzung steht dann innerhalb eines span's mit der id "result_box"
 
Zuletzt bearbeitet:
M

Mc Noise

Gast
Danke euch erstmal, genau so habe ich mir das vorgestellt :D

@XHelp: Kannst du das vll. nochmal genauer beschreiben, mit Html Zeugs und Webseiten bin ich leider nicht sehr bewandert :D
 
M

Mc Noise

Gast
@eRaaaa: Ich möchte keine weiteren APIs verwenden, um weitere Abhängigkeiten zu sparen. Ich möchte einfach nicht für alles noch ein Paket mitliefern :D Außerdem ist der Lerninhalt dann größer.

Ich habs jetzt so gemacht:

Java:
/***************************************************************************
 *   Copyright (C) 2010 by MJ <mj_dv@web.de>                               *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 *   This program is distributed in the hope that it will be useful,       *
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 *   GNU General Public License for more details.                          *
 *                                                                         *
 *   You should have received a copy of the GNU General Public License     *
 *   along with this program; if not, write to the                         *
 *   Free Software Foundation, Inc.,                                       *
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 ***************************************************************************/

package translate;

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.Scanner;

public class GoogleTranslate {

    public static String translate(Language from, Language to, String toTranslate) throws MalformedURLException, IOException {
        toTranslate = URLEncoder.encode(toTranslate, "utf-8");
        String str = "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&langpair=" +
                from  + "|" + to + "&q="+ toTranslate;
        Scanner sc = new Scanner(new URL(str).openStream());
        str = sc.nextLine();
        
        return parseJSONString(str);
    }

    private static String parseJSONString(String str) {

        //check response status
        int index = str.indexOf("\"responseStatus\": ");
        index += "\"responseStatus\": ".length();

        String tmp = str.substring(index, str.length()-1);
        int status = new Integer(tmp);

        //TODO throw exception if status != 200
        if(status == 200) {
            index = str.indexOf("translatedText\":\"");
            index += "translatedText\":\"".length();

            tmp = str.substring(index, str.indexOf("\"}", index));
            return tmp;
        }
        return str;
    }

}

Ist das okay so?
 

eRaaaa

Top Contributor
M

Mc Noise

Gast
Joa also es funktioniert, also habe ich eigentlich nichts daran auszusetzen, aber du meintest ja das mit substring hässlich ist, also wollte ich nochmal nachfragen :D
 

FArt

Top Contributor
Joa also es funktioniert, also habe ich eigentlich nichts daran auszusetzen, aber du meintest ja das mit substring hässlich ist, also wollte ich nochmal nachfragen :D

Ich glaube, dass der Ansatz häßlich ist ;-)

Eine API ist eine wohldefinierte Schnittstelle. Die Einbindung ist einfach. Dein Ansatz ist ein Wartungshorror.
Ich finde, der Lerneffekt ist größer, wenn man sich eine Aufgabe richtig löst. Mit Hacks hat man nichts gelernt.
 
M

Mc Noise

Gast
Ja gibt es, aber wie gesagt möchte ich nicht!

Außerdem macht die API es nicht viel anders. Vielleicht kannst du nochmal genauer erklären was du so schlecht an diesem Ansatz findest. Besonders das mit der Wartungshölle versteh ich nicht ganz^^
 
T

tuxedo

Gast
*offtopic*

Ich finde, der Lerneffekt ist größer, wenn man sich eine Aufgabe richtig löst. Mit Hacks hat man nichts gelernt.

Das kann man so oder so sehen. Am Lernziel ist man u.U. schneller wenn man erst gar keinen Hack versucht, sondern es, wie du schon sagst, gleich richtig macht.

Setzt man aber erstmal auf den Hack wird man früher oder später feststellen dass das eine doofe Entscheidung war und es dann richtig machen. Ergo: Auch hier das Lernziel erreicht.

Ich bin oft letzteren Weg gegangen. Und ich habs überlebt und auch daraus gelernt. Von daher sind
wohl beide Wege nicht sooo verkehrt :)

*/offtopic*
 

FArt

Top Contributor
*offtopic*



Das kann man so oder so sehen. Am Lernziel ist man u.U. schneller wenn man erst gar keinen Hack versucht, sondern es, wie du schon sagst, gleich richtig macht.

Setzt man aber erstmal auf den Hack wird man früher oder später feststellen dass das eine doofe Entscheidung war und es dann richtig machen. Ergo: Auch hier das Lernziel erreicht.

Ich bin oft letzteren Weg gegangen. Und ich habs überlebt und auch daraus gelernt. Von daher sind
wohl beide Wege nicht sooo verkehrt :)

*/offtopic*

Aus Erfahrung kann ich dazu nur zwei Bemerkungen anbringen, die nicht von mir stammen ...

1.) Wenn etwas erst mal läuft, dann wird es nicht mehr geändert. (oder nichts lebt länger als ein produktiver Prototpy)
2.) Wenn du jetzt keine Zeit hast es richtig zu machen, wann dann?
 
T

tuxedo

Gast
Aus Erfahrung kann ich dazu nur zwei Bemerkungen anbringen, die nicht von mir stammen ...

1.) Wenn etwas erst mal läuft, dann wird es nicht mehr geändert. (oder nichts lebt länger als ein produktiver Prototpy)
2.) Wenn du jetzt keine Zeit hast es richtig zu machen, wann dann?

Aus dem professionellen Umfeld heraus geb ich dir natürlich recht. Kunden eine "quick'n'dirty" Lösung zu verkaufen ist keine gute Idee. Diese Prototypen dann noch nach Jahren pflegen ist nicht mehr lustig,
Aber zur Hochschulzeit war das zumindest bei mir anders. Die "richtige" Lösung war meist mit einiger Einarbeitungszeit verbunden. Und wenn man noch am Anfang des Wissens steht, dann sieht man vieles anders und geht der vermeintlich einfacheren Weg. Und da stellt man früher (während der Entwicklungsphase) oder später (wenn es eigentlich schon zu spät ist) fest, dass es anders doch besser gewesen wäre und hat somit seine Lektion gelernt :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M com.google.gson wird nicht erkannt Netzwerkprogrammierung 2
J Google Drive Netzwerkprogrammierung 2
S HTTP Download von Google-URL mit Parametern Netzwerkprogrammierung 1
T GWT mit Google App Engine Netzwerkprogrammierung 0
Y HTTP Google Reader API Kommunikation Netzwerkprogrammierung 3
M Google Image Upload Netzwerkprogrammierung 12
Dit_ UDP Port testen | Ping Google? Netzwerkprogrammierung 7
L Google Suchergebnisse in Java Applikation Netzwerkprogrammierung 4
S Google Search Webservice mit Apache Axis realisieren? Netzwerkprogrammierung 2
P URL - 403 ERROR - Google News - PHP geht Netzwerkprogrammierung 5
G Google-Suche funktioniert nicht Netzwerkprogrammierung 6
B google durchsuchen mit URL.openStream() Netzwerkprogrammierung 5
bummerland Google liefert HTTP response code 403 Netzwerkprogrammierung 2
K Tabelle im Web über Listener aufrufen Netzwerkprogrammierung 1
F Verbindung zu einem LDAP Server über Java Netzwerkprogrammierung 4
S Socket Bilder über Socket Senden Netzwerkprogrammierung 0
B Zip Dateien über FTP laden Netzwerkprogrammierung 2
x46 byte[] über BufferedReader auslesen Netzwerkprogrammierung 18
E Socket Parameter über Sockets übergeben und auslesen ! Netzwerkprogrammierung 5
L Webbasierte Anwendung - Authentifizierung über LDAP/ActiveDirectory Netzwerkprogrammierung 5
J Probleme mit Multicast über IPv6, DatagramChannel Netzwerkprogrammierung 1
S Daten über TCP/IP senden Netzwerkprogrammierung 3
T Broadcast-message über spez. Netzwerk-Schnittstelle Netzwerkprogrammierung 1
T Mikrofonaudio über Java Server an Webbrowser streamen Netzwerkprogrammierung 13
M Erstelltes Programm über Internet Browser ausführen Netzwerkprogrammierung 26
T VPN-Verbindung über Java Netzwerkprogrammierung 4
V Einfachen Javaserver über das Internet erreichbar machen Netzwerkprogrammierung 2
J FTP Upload über Proxy funktioniert nicht Netzwerkprogrammierung 1
E Kurze Textnachrichten über einen Server von meinem Handy auf den Computer laden. Netzwerkprogrammierung 9
J FTP FTP Zugriff über Proxy Server Netzwerkprogrammierung 1
Thallius Java Application über ZScaler benutzer? Netzwerkprogrammierung 0
J Chat Server starten über GUI problem Netzwerkprogrammierung 4
V einfaches hin und her von Text über Server Netzwerkprogrammierung 2
P RMI Client Server Programm über Internet Netzwerkprogrammierung 2
antonbracke Multiuser Software über XMPP Server Netzwerkprogrammierung 1
Z Verbindung zwischen 2 Rechnern über ServerSockets nicht möglich Netzwerkprogrammierung 3
cezary Socket ServerSocket starten über GUIIm unterstehenden Code versuche Netzwerkprogrammierung 6
I ASCII über serielle Schnittstelle Netzwerkprogrammierung 1
N RMI "RMI über Lan funktioniert nicht" & "RMI-Server im Lan scannen" Netzwerkprogrammierung 13
L Mit Java über PHP in MySQL anmelden (Login script) Netzwerkprogrammierung 3
M Socket String Arrays über Socket an Server schicken Netzwerkprogrammierung 2
T Socket Methoden über Internet aufrufen Netzwerkprogrammierung 1
S Socket Kommunikation über Internet Netzwerkprogrammierung 1
X Problem mit vielen Bytes über Socket Netzwerkprogrammierung 23
K ByteArray über Netzwerk senden klappt nicht Netzwerkprogrammierung 5
M allgemeine Frage über Server-Client-Kommunikation Netzwerkprogrammierung 5
P RMI Threads die über RMI auf Datenbank zugreifen Netzwerkprogrammierung 2
S Datei schreiben über Applet Netzwerkprogrammierung 8
G Klassen über Netzwerk kommunizieren lassen Netzwerkprogrammierung 6
J Erster Server-Client läuft auf lokalem Rechner problemlos. Zwei Rechner über das Internet nicht Netzwerkprogrammierung 8
Kjubert Synchronisieren von Objekten über Client/Server - bester Weg? Netzwerkprogrammierung 7
S ImageIcon über Socket schicken (Serialisierung) Netzwerkprogrammierung 6
H Socket Objekte über Socket? Allgemeine Verständnisprobleme in Sachen Socket Netzwerkprogrammierung 3
S Seltsames Verhalten beim Empfangen von Daten über DataInputStream Netzwerkprogrammierung 12
A TCP über UDP Verbindung? Netzwerkprogrammierung 10
C Datei über Socket schreiben und Ereignis lesen Netzwerkprogrammierung 9
D Socket Class über Netzwerk verschicken Netzwerkprogrammierung 2
D JNLP über Webstart funktioniert nicht... Netzwerkprogrammierung 2
J Socket Dateien über Socket auf Server speichern Netzwerkprogrammierung 3
D Socket Datei nur stückweise über Socket verschicken Netzwerkprogrammierung 6
G Bild über Socket schicken - Client/Server Netzwerkprogrammierung 10
A Computer über Internet verbinden Netzwerkprogrammierung 12
N über Java in eine Text-Datei auf einem Server schreiben Netzwerkprogrammierung 2
c_sidi90 ideale Lösung, Screen Capture über Netzwerk Netzwerkprogrammierung 3
S Socket Verschiedene Exceptions beim Übertragen von Bildern über Socket Netzwerkprogrammierung 20
T ArrayList über Netzwerk senden! Netzwerkprogrammierung 5
N Problem über http eine Datei zu senden Netzwerkprogrammierung 4
T Verbindungsversuche über TCP Sockets von mehreren Threads führt zu Serverabsturz Netzwerkprogrammierung 2
V Authentifikation über mehrere Server? Netzwerkprogrammierung 3
C Verbindung zu einem Hostrechner über das Internet herstellen Netzwerkprogrammierung 15
M Map über Webservice übertragen Netzwerkprogrammierung 3
D Mehrere Clients über Java-Sockets Netzwerkprogrammierung 13
P Socket Verbindung über das Internet Netzwerkprogrammierung 2
Z Socket Connection reset by peer nur per IP nicht über localhost Netzwerkprogrammierung 13
ruffio1978 Telnet über ein socket ansprechen Netzwerkprogrammierung 8
F Socket Verbindungen über mehrere Server Netzwerkprogrammierung 4
U Datei über das Netzwerk einlesen und speichern Netzwerkprogrammierung 8
G Klassen über JMX per URLClassloader laden? Netzwerkprogrammierung 2
E Zwei PCs über das Internet miteinander verbinden? Netzwerkprogrammierung 3
E Socketverbindung über das Internet - Timeout? Netzwerkprogrammierung 28
M Socket Bilder über das Netzwerk übertragen Netzwerkprogrammierung 4
E Java über Socket ins Internet? Netzwerkprogrammierung 4
F Socket Daten über verschiedene IP's schicken Netzwerkprogrammierung 5
M Socket JavaProg über einen Clienten steuern Netzwerkprogrammierung 5
M Mail über Exchange versenden Netzwerkprogrammierung 13
F C/S über HTTPS Netzwerkprogrammierung 2
D ...class.getResourceAsStream("/meine.properties") funktioniert nicht über RMI? Netzwerkprogrammierung 3
M ganymed-ssh2.har: ftp-Verbindung über ftp-Proxy Netzwerkprogrammierung 2
J Probleme bei RSA mit byte[] bei Versand über RMI Netzwerkprogrammierung 2
Z File über Socket lesen Netzwerkprogrammierung 3
A HTTP Binärdaten über PHP-Skript in Datenbank schreiben bzw auslesen Netzwerkprogrammierung 2
M Objekt über Object-Stream, empfange "alte" Daten Netzwerkprogrammierung 2
P FTP isFile() über FTP Netzwerkprogrammierung 3
I Socket HTTP Nachrichten über Sockets verschicken Netzwerkprogrammierung 2
N String als byte Array über Socket versenden Netzwerkprogrammierung 8
M Objekt über socket senden/empfangen Netzwerkprogrammierung 3
N Socket File über Socket vom Server an Client versenden Netzwerkprogrammierung 15
P Socket Problem mit Netzwerkverbindung über TCP Netzwerkprogrammierung 12
A UCP Connection über Proxy möglich? Netzwerkprogrammierung 7
V Verbindung zweier Rechner über das Internet mit Sockets Netzwerkprogrammierung 8

Ähnliche Java Themen

Neue Themen


Oben