Поскольку API Google Translate требует оплаты, я подумал, как его украсть.
1. Используйте HttpClient для отправки запроса http://translate.google.com.
2. Затем используйте Jsoupparse html, чтобы извлечь переведенный текст.
Скопируйте код кода следующим образом:
/**
* Авторские права (c) blackbear, Inc. Все права защищены.
*/
пакет org.bb.util.i18n;
импортировать java.io.InputStream;
импортировать java.net.URLEncoder;
импортировать java.text.MessageFormat;
импортировать org.apache.commons.io.IOUtils;
импортировать org.bb.util.net.http.HttpClientUtil;
импортировать org.jsoup.Jsoup;
импортировать org.jsoup.nodes.Document;
импортировать org.jsoup.nodes.Element;
/**
* TranslateUtil
*
* <pre>Инструмент перевода
*PS: через гугл переводчик
* </pre>
*
* @author Кэтти
* @версия 1.0, создана 2 сентября 2011 г.
*/
общественный класс TranslateUtil {
защищенная статическая конечная строка URL_TEMPLATE = "http://translate.google.com/?langpair={0}&text={1}";
защищенная статическая финальная строка ID_RESULTBOX = "result_box";
защищенная статическая окончательная строка ENCODING = "UTF-8";
protected static Final String AUTO = "auto" // Google самостоятельно определяет исходную систему
protected static Final String TAIWAN = "zh-TW" // Традиционный китайский;
protected static Final String CHINA = "zh-CN" // средний;
protected static Final String ENGLISH = "en" // английский;
protected static Final String JAPAN = "ja" // день;
/**
* <pre>Google перевел
*PS: Оставьте Google определение исходной системы.
* </pre>
*
* @param текст
* @param target_lang целевая система
* @возвращаться
* @throwsException
*/
общедоступная статическая строка перевода (конечный текст строки, конечная строка target_lang) выдает исключение {
вернуть перевод (текст, АВТО, target_lang);
}
/**
* <pre>Google перевел</pre>
*
* @param текст
* Исходная система @param src_lang
* @param target_lang целевая система
* @возвращаться
* @throwsException
*/
публичный статический перевод строки (конечный текст строки, окончательная строка src_lang, окончательная строка target_lang)
выдает исключение {
Входной поток = нуль;
Документ документа = ноль;
Элемент element = null;
пытаться {
// создаем строку URL
Строковый URL = MessageFormat.format(URL_TEMPLATE,
URLEncoder.encode(src_lang + "|" + target_lang, КОДИРОВАНИЕ),
URLEncoder.encode(текст, КОДИРОВАНИЕ));
// подключаемся и загружаем html
is = HttpClientUtil.downloadAsStream(url);
// анализ HTML с помощью Jsoup
doc = Jsoup.parse(is, КОДИРОВАНИЕ, "");
ele = doc.getElementById(ID_RESULTBOX);
Строковый результат = ele.text();
вернуть результат;
} окончательно {
IOUtils.closeQuietly(is);
есть = ноль;
документ = ноль;
Эле = ноль;
}
}
/**
* <pre>Перевод Google: Китайский -->Традиционный китайский</pre>
*
* @param текст
* @возвращаться
* @throwsException
*/
public static String cn2tw (окончательный текст строки) выдает исключение {
возврат перевода(текст, КИТАЙ, ТАЙВАНЬ);
}
/**
* <pre>Перевод Google: Традиционный китайский -->中文</pre>
*
* @param текст
* @возвращаться
* @throwsException
*/
общедоступная статическая строка tw2cn (окончательный текст строки) выдает исключение {
return Translate(текст, ТАЙВАНЬ, КИТАЙ);
}
/**
* <pre>Перевод Google: английский --> традиционный китайский</pre>
*
* @param текст
* @возвращаться
* @throwsException
*/
общедоступная статическая строка en2tw (окончательный текст строки) выдает исключение {
возврат перевода (текст, АНГЛИЙСКИЙ, ТАЙВАНЬ);
}
/**
* <pre>Перевод Google: традиционный китайский --> английский</pre>
*
* @param текст
* @возвращаться
* @throwsException
*/
общедоступная статическая строка tw2en (окончательный текст строки) выдает исключение {
возврат перевода (текст, ТАЙВАНЬ, АНГЛИЙСКИЙ);
}
/**
* <pre>Перевод Google: Японский -->Традиционный китайский</pre>
*
* @param текст
* @возвращаться
* @throwsException
*/
общедоступная статическая строка jp2tw (окончательный текст строки) выдает исключение {
возврат перевода (текст, ЯПОНИЯ, ТАЙВАНЬ);
}
/**
* <pre>Перевод Google: традиционный китайский --> японский</pre>
*
* @param текст
* @возвращаться
* @throwsException
*/
общедоступная статическая строка tw2jp (окончательный текст строки) выдает исключение {
return Translate(текст, ТАЙВАНЬ, ЯПОНИЯ);
}
}
HttpClientUtil.java
Скопируйте код кода следующим образом:
/**
* Авторские права (c) Blackbear, Inc. Все права защищены.
*/
пакет org.bb.util.net.http;
импортировать java.io.BufferedInputStream;
импортировать java.io.File;
импортировать java.io.FileOutputStream;
импортировать java.io.InputStream;
импортировать java.util.Map;
импортировать org.apache.commons.io.IOUtils;
импортировать org.apache.commons.logging.Log;
импортировать org.apache.commons.logging.LogFactory;
импортировать org.apache.http.HttpEntity;
импортировать org.apache.http.HttpResponse;
импортировать org.apache.http.client.HttpClient;
импортировать org.apache.http.client.methods.HttpGet;
импортировать org.apache.http.client.methods.HttpPost;
импортировать org.apache.http.client.methods.HttpRequestBase;
импортировать org.apache.http.conn.scheme.PlainSocketFactory;
импортировать org.apache.http.conn.scheme.Scheme;
импортировать org.apache.http.conn.scheme.SchemeRegistry;
импортировать org.apache.http.conn.ssl.SSLSocketFactory;
импортировать org.apache.http.entity.BufferedHttpEntity;
импортировать org.apache.http.impl.client.DefaultHttpClient;
импортировать org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
импортировать org.apache.http.params.BasicHttpParams;
/**
*PostUtil.java
*
* @author Кэтти
* @версия 1.0, создана 20 февраля 2008 г.
*/
общественный класс HttpClientUtil {
защищенный статический журнал журнала = LogFactory.getLog(HttpClientUtil.class);
защищенный статический HttpClient httpclient = null;
защищенный статический int maxTotal = 200;
защищенный статический int maxPerRoute = 20;
protected static String userAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.7 (KHTML, например Gecko) Chrome/16.0.912.77 Safari/535.7";
статический {
если (httpclient == null) {
// ~~~~~~~~~~~~~~~~~~~~
// создаем httpклиент
// ~~~~~~~~~~~~~~~~~~~~
SchemeRegistry reg = новый SchemeRegistry();
reg.register(new Scheme("http", 80, PlainSocketFactory.getSocketFactory()));
reg.register(new Scheme("https", 443, SSLSocketFactory.getSocketFactory()));
ThreadSafeClientConnManager см = новый ThreadSafeClientConnManager (reg);
cm.setMaxTotal(maxTotal);
cm.setDefaultMaxPerRoute(maxPerRoute);
httpclient = новый DefaultHttpClient (см);
}
}
/**
* <pre>Вернуться к Inputstream в следующий раз</pre>
*
* URL-адрес @param
* @возвращаться
* @throwsException
*/
public static InputStream downloadAsStream (String url) выдает исключение {
InputStream = (InputStream) download (url, null, null, false);
возврат есть;
}
/**
* <pre>Сохранить в файл после загрузки</pre>
*
* URL-адрес @param
* @param saveFile
* @throwsException
*/
public static void download (String url, File saveFile) выдает исключение {
скачать (URL, saveFile, ноль, ложь);
}
/**
* <pre>下</pre>
*
* URL-адрес @param
* @param saveFile
* @param параметры
* @param isPost
* @return Если saveFile==null возвращается во входной поток, в противном случае возвращается в saveFile
* @throwsException
*/
загрузка общедоступного статического объекта (URL-адрес конечной строки, окончательный файл saveFile, окончательные параметры Map<String, String>,
окончательное логическое значение isPost) выдает исключение {
логическое значение saveToFile = saveFile != null;
// проверяем существование каталога ??
if (saveToFile && saveFile.getParentFile().exists() == false) {
saveFile.getParentFile().mkdirs();
}
Ошибка исключения = ноль;
Запрос HttpRequestBase = null;
Ответ HttpResponse = ноль;
HttpEntity сущность = ноль;
FileOutputStream fos = null;
Результат объекта = ноль;
пытаться {
//создаем запрос
если (isPost) {
запрос = новый HttpPost (url);
} еще {
запрос = новый HttpGet (url);
}
// добавляем заголовок и параметры
addHeaderAndParams (запрос, параметры);
// соединять
ответ = httpclient.execute(запрос);
сущность = ответ.getEntity();
сущность = новый BufferedHttpEntity (сущность);
// получаем результат
if (saveToFile) {// сохранить на диск
fos = новый FileOutputStream (saveFile);
IOUtils.copy(entity.getContent(), fos);
результат = сохранитьФайл;
} else { // переход к входному потоку
результат = новый BufferedInputStream(entity.getContent());
}
} catch (Исключение е) {
ошибка = е;
} окончательно {
// закрывать
IOUtils.closeQuietly(fos);
// прозрачный
запрос = ноль;
ответ = ноль;
сущность = ноль;
если (ошибка != ноль) {
выбросить ошибку;
}
вернуть результат;
}
}
protected static void addHeaderAndParams (окончательный запрос HttpRequestBase, окончательные параметры Map<String, String>) {
// добавляем заголовок по умолчанию
request.addHeader("Агент пользователя", userAgent);
// добавляем параметры
если (параметры != ноль) {
// карта --> HttpParams
BasicHttpParams myParams = новый BasicHttpParams ();
for (Строковый ключ: params.keySet()) {
myParams.setParameter(ключ, params.get(ключ));
}
request.setParams(myParams);
}
}
общественный статический HttpClient getHttpclient() {
вернуть httpклиент;
}
public static void setHttpclient(HttpClient httpclient) {
HttpClientUtil.httpclient = httpclient;
}
public static int getMaxTotal() {
вернуть МаксИтог;
}
public static void setMaxTotal(int maxTotal) {
HttpClientUtil.maxTotal = maxTotal;
}
public static int getMaxPerRoute() {
вернуть maxPerRoute;
}
public static void setMaxPerRoute(int maxPerRoute) {
HttpClientUtil.maxPerRoute = maxPerRoute;
}
общественная статическая строка getUserAgent() {
вернуть пользовательский агент;
}
public static void setUserAgent(String userAgent) {
HttpClientUtil.userAgent = userAgent;
}
}