[14] | 1 | /** |
---|
| 2 | * Translate.java |
---|
| 3 | * |
---|
| 4 | * Makes the Google Translate API available to Java applications. |
---|
| 5 | */ |
---|
| 6 | package com.google.api.translate; |
---|
| 7 | |
---|
| 8 | import java.io.BufferedReader; |
---|
| 9 | import java.io.IOException; |
---|
| 10 | import java.io.InputStream; |
---|
| 11 | import java.io.InputStreamReader; |
---|
| 12 | import java.net.HttpURLConnection; |
---|
| 13 | import java.net.MalformedURLException; |
---|
| 14 | import java.net.URL; |
---|
| 15 | import java.net.URLEncoder; |
---|
| 16 | |
---|
| 17 | /** |
---|
| 18 | * @author rich |
---|
| 19 | * Makes the Google Translate API available to Java applications. |
---|
| 20 | */ |
---|
| 21 | public class Translate { |
---|
| 22 | |
---|
| 23 | private static final String ENCODING = "UTF-8"; |
---|
| 24 | private static final String URL_STRING = "http://translate.google.com/translate_t?langpair="; |
---|
| 25 | private static final String TEXT_VAR = "&text="; |
---|
| 26 | |
---|
| 27 | /** |
---|
| 28 | * @param text The String to translate. |
---|
| 29 | * @param from The language code to translate from. |
---|
| 30 | * @param to The language code to translate to. |
---|
| 31 | * @return The translated String. |
---|
| 32 | * @throws MalformedURLException |
---|
| 33 | * @throws IOException |
---|
| 34 | */ |
---|
| 35 | public static String translate(String text, String from, String to) throws MalformedURLException, IOException { |
---|
| 36 | StringBuilder url = new StringBuilder(); |
---|
| 37 | url.append(URL_STRING).append(from).append('|').append(to); |
---|
| 38 | url.append(TEXT_VAR).append(URLEncoder.encode(text, ENCODING)); |
---|
| 39 | |
---|
| 40 | HttpURLConnection uc = (HttpURLConnection) new URL(url.toString()).openConnection(); |
---|
| 41 | uc.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)"); |
---|
| 42 | |
---|
| 43 | String page = toString(uc.getInputStream()); |
---|
| 44 | |
---|
| 45 | int resultBox = page.indexOf("<div id=result_box dir="); |
---|
| 46 | |
---|
| 47 | if (resultBox < 0) throw new Error("No translation result returned."); |
---|
| 48 | |
---|
| 49 | String start = page.substring(resultBox); |
---|
| 50 | return start.substring(27, start.indexOf("</div>")); |
---|
| 51 | } |
---|
| 52 | |
---|
| 53 | private static String toString(InputStream inputStream) throws IOException { |
---|
| 54 | String string; |
---|
| 55 | StringBuilder outputBuilder = new StringBuilder(); |
---|
| 56 | if (inputStream != null) { |
---|
| 57 | BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, ENCODING)); |
---|
| 58 | while (null != (string = reader.readLine())) { |
---|
| 59 | outputBuilder.append(string).append('\n'); |
---|
| 60 | } |
---|
| 61 | } |
---|
| 62 | return outputBuilder.toString(); |
---|
| 63 | } |
---|
| 64 | } |
---|