package ender; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.net.URLEncoder; import org.json.JSONException; import org.json.JSONObject; public class GoogleTranslator { static public String apikey = "API-KEY"; static public String apiurl = "https://www.googleapis.com/language/translate/v2?key="; static public String lang = "en"; static public boolean turnedon = false; protected static final String ENCODING = "UTF-8"; public static String translate(String str) { if (!turnedon) return str; String res = ""; URL url = url(str); if (url == null) return str; try { final HttpURLConnection uc = (HttpURLConnection) url.openConnection(); uc.setRequestMethod("GET"); uc.setDoOutput(true); try { String result; try { result = inputStreamToString(uc.getInputStream()); } catch (Exception e) { return str; } JSONObject o = new JSONObject(result); res = o.getJSONObject("data").getJSONArray("translations").getJSONObject(0).getString("translatedText"); str = res; res = o.getJSONObject("data").getJSONArray("translations").getJSONObject(0).getString("detectedSourceLanguage"); res = "[" + res + "] " + str; } catch (JSONException e) { return str; } finally { // http://java.sun.com/j2se/1.5.0/docs/guide/net/http-keepalive.html uc.getInputStream().close(); if (uc.getErrorStream() != null) { uc.getErrorStream().close(); } } } catch (IOException e) { return str; } return res; } private static String inputStreamToString(final InputStream inputStream) throws Exception { final StringBuilder outputBuilder = new StringBuilder(); try { String string; if (inputStream != null) { BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, ENCODING)); while (null != (string = reader.readLine())) { outputBuilder.append(string).append('\n'); } } } catch (Exception ex) { throw new Exception("[google-api-translate-java] Error reading translation stream.", ex); } return outputBuilder.toString(); } private static URL url(String str) { try { str = URLEncoder.encode(str, ENCODING); } catch (UnsupportedEncodingException e) { return null; } URL url = null; try { url = new URL(apiurl + apikey + "&target=" + lang + "&q=" + str); } catch (MalformedURLException e) { return null; } return url; } }