Da die Google Translate API kostenpflichtig ist, habe ich über eine Möglichkeit nachgedacht, sie zu stehlen.
1. Verwenden Sie HttpClient, um eine Anfrage an http://translate.google.com zu senden
2. Verwenden Sie dann Jsoupparse html, um den übersetzten Text zu extrahieren.
Kopieren Sie den Codecode wie folgt:
/**
* Copyright (c) blackbear, Inc. Alle Rechte vorbehalten.
*/
Paket org.bb.util.i18n;
import java.io.InputStream;
import java.net.URLEncoder;
import java.text.MessageFormat;
import org.apache.commons.io.IOUtils;
import org.bb.util.net.http.HttpClientUtil;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
/**
* TranslateUtil
*
* <pre>Übersetzungstool
*PS: über Google Translate
* </pre>
*
* @author catty
* @Version 1.0, erstellt am 02.09.2011
*/
öffentliche Klasse TranslateUtil {
protected static final String URL_TEMPLATE = "http://translate.google.com/?langpair={0}&text={1}";
protected static final String ID_RESULTBOX = "result_box";
protected static final String ENCODING = "UTF-8";
protected static final String AUTO = "auto"; // Google bestimmt das Quellsystem selbst
protected static final String TAIWAN = "zh-TW" // Traditionelles Chinesisch
protected static final String CHINA = "zh-CN"; // medium
protected static final String ENGLISH = "en"; // Englisch
protected static final String JAPAN = "ja" // Tag
/**
* <pre>Google übersetzt
*PS: Überlassen Sie es Google, das Quellsystem zu bestimmen
* </pre>
*
* @param-Text
* @param target_lang Zielsystem
* @zurückkehren
* @throwsException
*/
public static String translator(final String text, final String target_lang) löst eine Ausnahme aus {
return Translate(text, AUTO, target_lang);
}
/**
* <pre>Google übersetzt</pre>
*
* @param-Text
* @param src_lang Quellsystem
* @param target_lang Zielsystem
* @zurückkehren
* @throwsException
*/
public static String Translate(final String text, final String src_lang, final String target_lang)
wirft eine Ausnahme {
InputStream ist = null;
Dokumentdokument = null;
Element element = null;
versuchen {
// URL-String erstellen
String url = MessageFormat.format(URL_TEMPLATE,
URLEncoder.encode(src_lang + „|“ + target_lang, ENCODING),
URLEncoder.encode(text, ENCODING));
// Verbinden und HTML herunterladen
is = HttpClientUtil.downloadAsStream(url);
// HTML von Jsoup analysieren
doc = Jsoup.parse(is, ENCODING, "");
ele = doc.getElementById(ID_RESULTBOX);
String result = ele.text();
Ergebnis zurückgeben;
} Endlich {
IOUtils.closeQuietly(is);
ist = null;
doc = null;
ele = null;
}
}
/**
* <pre>Google-Übersetzung: Chinesisch -> Traditionelles Chinesisch</pre>
*
* @param-Text
* @zurückkehren
* @throwsException
*/
öffentlicher statischer String cn2tw(final String text) löst eine Ausnahme aus {
return Translate(text, CHINA, TAIWAN);
}
/**
* <pre>Google-Übersetzung: Traditionelles Chinesisch-->中文</pre>
*
* @param-Text
* @zurückkehren
* @throwsException
*/
öffentlicher statischer String tw2cn(final String text) löst eine Ausnahme aus {
return Translate(text, TAIWAN, CHINA);
}
/**
* <pre>Google-Übersetzung: Englisch -> Traditionelles Chinesisch</pre>
*
* @param-Text
* @zurückkehren
* @throwsException
*/
öffentlicher statischer String en2tw(final String text) löst eine Ausnahme aus {
return translator(text, ENGLISH, TAIWAN);
}
/**
* <pre>Google-Übersetzung: Traditionelles Chinesisch – Englisch</pre>
*
* @param-Text
* @zurückkehren
* @throwsException
*/
öffentlicher statischer String tw2en(final String text) löst eine Ausnahme aus {
return Translate(text, TAIWAN, ENGLISH);
}
/**
* <pre>Google-Übersetzung: Japanisch -> Traditionelles Chinesisch</pre>
*
* @param-Text
* @zurückkehren
* @throwsException
*/
öffentlicher statischer String jp2tw(final String text) löst eine Ausnahme aus {
return Translate(text, JAPAN, TAIWAN);
}
/**
* <pre>Google-Übersetzung: Traditionelles Chinesisch – Japanisch</pre>
*
* @param-Text
* @zurückkehren
* @throwsException
*/
öffentlicher statischer String tw2jp(final String text) löst eine Ausnahme aus {
return Translate(text, TAIWAN, JAPAN);
}
}
HttpClientUtil.java
Kopieren Sie den Codecode wie folgt:
/**
* Copyright (c) Blackbear, Inc. Alle Rechte vorbehalten.
*/
Paket org.bb.util.net.http;
import java.io.BufferedInputStream;
java.io.File importieren;
import java.io.FileOutputStream;
import java.io.InputStream;
java.util.Map importieren;
import org.apache.commons.io.IOUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpRequestBase;
import org.apache.http.conn.scheme.PlainSocketFactory;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.entity.BufferedHttpEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
import org.apache.http.params.BasicHttpParams;
/**
*PostUtil.java
*
* @author catty
* @Version 1.0, erstellt am 20.02.2008
*/
öffentliche Klasse HttpClientUtil {
protected static Log log = LogFactory.getLog(HttpClientUtil.class);
protected static HttpClient httpclient = null;
protected static int maxTotal = 200;
protected static int maxPerRoute = 20;
protected static String userAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.7 (KHTML, wie Gecko) Chrome/16.0.912.77 Safari/535.7";
statisch {
if (httpclient == null) {
// ~~~~~~~~~~~~~~~~~~~
// httpclient erstellen
// ~~~~~~~~~~~~~~~~~~~
SchemeRegistry reg = new SchemeRegistry();
reg.register(new Scheme("http", 80, PlainSocketFactory.getSocketFactory()));
reg.register(new Scheme("https", 443, SSLSocketFactory.getSocketFactory()));
ThreadSafeClientConnManager cm = new ThreadSafeClientConnManager(reg);
cm.setMaxTotal(maxTotal);
cm.setDefaultMaxPerRoute(maxPerRoute);
httpclient = new DefaultHttpClient(cm);
}
}
/**
* <pre>Das nächste Mal zum Inputstream zurückkehren</pre>
*
* @param-URL
* @zurückkehren
* @throwsException
*/
public static InputStream downloadAsStream(String url) löst eine Ausnahme aus {
InputStream is = (InputStream) download(url, null, null, false);
Rückkehr ist;
}
/**
* <pre>Nach dem Herunterladen in Datei speichern</pre>
*
* @param-URL
* @param saveFile
* @throwsException
*/
public static void download(String url, File saveFile) löst eine Ausnahme aus {
download(url, saveFile, null, false);
}
/**
* <pre>下</pre>
*
* @param-URL
* @param saveFile
* @param params
* @param isPost
* @return Wenn saveFile==null zu inputstream zurückkehrt, andernfalls zu saveFile
* @throwsException
*/
öffentlicher statischer Objekt-Download (endgültige String-URL, endgültige Datei-SaveFile, endgültige Map<String, String>-Parameter,
final boolean isPost) löst eine Ausnahme aus {
boolean saveToFile = saveFile != null;
// Überprüfen Sie, ob das Verzeichnis existiert??
if (saveToFile && saveFile.getParentFile().exists() == false) {
saveFile.getParentFile().mkdirs();
}
Ausnahme err = null;
HttpRequestBase-Anfrage = null;
HttpResponse-Antwort = null;
HttpEntity-Entität = null;
FileOutputStream fos = null;
Objektergebnis = null;
versuchen {
//Anfrage erstellen
if (isPost) {
request = new HttpPost(url);
} anders {
request = new HttpGet(url);
}
// Header und Parameter hinzufügen
addHeaderAndParams(request, params);
// verbinden
Antwort = httpclient.execute(request);
Entity = Antwort.getEntity();
entity = new BufferedHttpEntity(entity);
//Ergebnis erhalten
if (saveToFile) {// auf der Festplatte speichern
fos = new FileOutputStream(saveFile);
IOUtils.copy(entity.getContent(), fos);
result = saveFile;
} else { // Warp zum Eingabestream
result = new BufferedInputStream(entity.getContent());
}
} Catch (Ausnahme e) {
err = e;
} Endlich {
// schließen
IOUtils.closeQuietly(fos);
// klar
Anfrage = null;
Antwort = null;
Entität = null;
if (err != null) {
wirf irr;
}
Ergebnis zurückgeben;
}
}
protected static void addHeaderAndParams(final HttpRequestBase request, final Map<String, String> params) {
// Standard-Header hinzufügen
request.addHeader("User-Agent", userAgent);
// Parameter hinzufügen
if (params != null) {
// map --> HttpParams
BasicHttpParams myParams = new BasicHttpParams();
for (String key : params.keySet()) {
myParams.setParameter(key, params.get(key));
}
request.setParams(myParams);
}
}
öffentlicher statischer HttpClient getHttpclient() {
return httpclient;
}
public static void setHttpclient(HttpClient httpclient) {
HttpClientUtil.httpclient = httpclient;
}
public static int getMaxTotal() {
return maxTotal;
}
public static void setMaxTotal(int maxTotal) {
HttpClientUtil.maxTotal = maxTotal;
}
public static int getMaxPerRoute() {
return maxPerRoute;
}
public static void setMaxPerRoute(int maxPerRoute) {
HttpClientUtil.maxPerRoute = maxPerRoute;
}
öffentlicher statischer String getUserAgent() {
return userAgent;
}
public static void setUserAgent(String userAgent) {
HttpClientUtil.userAgent = userAgent;
}
}