0

I am trying to implement the code from this post. I manage to do it successfully for some languages, but for Greek I get some weird results, like this: ΑÏ?χάÏ?ιος

Here is the java code I use:

public static String translate(String langFrom, String langTo, String text) {

    StringBuilder response = null;
    System.out.println("Translate: " + text);
    try {
        String urlStr = Main.GOOGLE_SCRIPTS_URL +
                "?q=" + URLEncoder.encode(text, "UTF-8") +
                "&target=" + langTo +
                "&source=" + langFrom;
        //System.out.println(urlStr);
        URL url = new URL(urlStr);
        response = new StringBuilder();
        HttpURLConnection con = (HttpURLConnection) url.openConnection();
        con.setRequestProperty("User-Agent", "Mozilla/5.0"); 
        BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
        String inputLine;
        while ((inputLine = in.readLine()) != null) {
            response.append(inputLine);
        }
        in.close();
    }
    catch (IOException e)
    {
        e.printStackTrace();
    }

    return response.toString();
}

And this is the script that I use in script.google.com website:

var mock = {
  parameter:{
    q:'hello',
    source:'en',
    target:'fr'
  }
};


function doGet(e) {
  e = e || mock;

  var sourceText = ''
  if (e.parameter.q){
    sourceText = e.parameter.q;
  }

  var sourceLang = '';
  if (e.parameter.source){
    sourceLang = e.parameter.source;
  }

  var targetLang = 'en';
  if (e.parameter.target){
    targetLang = e.parameter.target;
  }

  var translatedText = LanguageApp.translate(sourceText, sourceLang, targetLang, {contentType: 'html'});

  return ContentService.createTextOutput(translatedText).setMimeType(ContentService.MimeType.JSON);
}

Any ideas how to fix this? Thanks.

stavros.3p
  • 2,244
  • 6
  • 20
  • 37

1 Answers1

0

I managed to solve this by using this code:

public static String translate(String langFrom, String langTo, String text) 
{ 
    String translatedText=null;
    try { 
         String urlStr = Main.GOOGLE_SCRIPTS_URL +
                "?q=" + URLEncoder.encode(text, "UTF-8") +
                "&target=" + langTo +
                 "&source=" + langFrom;
         //System.out.println(urlStr);
         URL url = new URL(urlStr);
         URLConnection conn = url.openConnection();

         BufferedReader br = new BufferedReader(
                            new InputStreamReader(conn.getInputStream(),"UTF-8"));

         String inputLine;
         while ((inputLine = br.readLine()) != null) {
             translatedText=inputLine; 
         }
         br.close();

       } catch (MalformedURLException e) {
         e.printStackTrace();
       } catch (IOException e) {
         e.printStackTrace();
       }

      return translatedText; 
}

At first on eclipse console I got results like this "???? ?? ??" but then I went to Run -> Run configurations -> Common and changed to encoding to UTF-8. Now everything works great!

stavros.3p
  • 2,244
  • 6
  • 20
  • 37