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 | } |
---|