Android Open Source - ScalAR Google Translate






From Project

Back to project page ScalAR.

License

The source code is released under:

GNU General Public License

If you think the Android project ScalAR listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.skylion.speech;
//from w  ww  . jav a 2 s  . com
import java.io.IOException;
import java.io.Reader;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.nio.charset.Charset;
import java.util.Locale;

/***************************************************************************************************************
 * An API for a Google Translation service in Java. 
 * Please Note: This API is unofficial and is not supported by Google. Subject to breakage at any time.
 * The translator allows for language detection and translation. 
 * Recommended for translation of user interfaces or speech commands.
 * All translation services provided via Google Translate
 * @author Aaron Gokaslan (Skylion)
 ***************************************************************************************************************/
public final class GoogleTranslate { //Class marked as final since all methods are static
  
  /**
   * URL to query for Translation
   */
  private final static String GOOGLE_TRANSLATE_URL = "http://translate.google.com/translate_a/t?client=t";

  /**
   * Private to prevent instantiation
   */
  private GoogleTranslate(){};
  
  /**
   * Converts the ISO-639 code into a friendly language code in the user's default language
   * For example, if the language is English and the default locale is French, it will return "anglais"
   * Useful for UI Strings
   * @param languageCode The ISO639-1 
   * @return The language in the user's default language
   * @see {@link #detectLanguage}
   */
  public static String getDisplayLanguage(String languageCode){
    return (new Locale(languageCode)).getDisplayLanguage();
  }
  
  /**
   * Automatically determines the language of the original text
   * @param text represents the text you want to check the language of
   * @return The ISO-639 code for the language
   * @throws java.io.IOException if it cannot complete the request
   */
  public static String detectLanguage(String text) throws IOException{
    String encoded = URLEncoder.encode(text, "UTF-8"); //Encodes the string
    URL url = new URL(GOOGLE_TRANSLATE_URL + "&text=" + encoded); //Generates URL
    String rawData = urlToText(url);//Gets text from Google
    return findLanguage(rawData);
  }
  
  
  /**
   * Automatically translates text to a system's default language according to its locale
   * Useful for creating international applications as you can translate UI strings
   * @param text The text you want to translate
   * @return The translated text
   * @throws java.io.IOException if cannot complete request
   */
  public static String translate(String text) throws IOException{
    return translate(Locale.getDefault().getLanguage(), text);
  }
  
  /**
   * Automatically detects language and translate to the targetLanguage
   * @param targetLanguage The language you want to translate into in ISO-639 format
   * @param text The text you actually want to translate 
   * @return The translated text.
   * @throws java.io.IOException if it cannot complete the request
   */
  public static String translate(String targetLanguage, String text) throws IOException{
    return translate("auto",targetLanguage, text);
  }
  
  /**
   * Translate text from sourceLanguage to targetLanguage
   * Specifying the sourceLanguage greatly improves accuracy over short Strings
   * @param sourceLanguage The language you want to translate from in ISO-639 format
   * @param targetLanguage The language you want to translate into in ISO-639 format
   * @param text The text you actually want to translate 
   * @return the translated text.
   * @throws java.io.IOException if it cannot complete the request
   */
  public static String translate(String sourceLanguage, String targetLanguage, String text) throws IOException{
    String encoded = URLEncoder.encode(text, "UTF-8"); //Encode
    //Generates URL
    URL url = new URL(GOOGLE_TRANSLATE_URL + "&sl=" + sourceLanguage + "&tl=" + targetLanguage +  "&text=" + encoded); 
    String rawData = urlToText(url);//Gets text from Google
    if(rawData==null){
      return null;
    }
    String[] raw =  rawData.split("\"");//Parses the JSON
    if(raw.length<2){
      return null;
    }
    return raw[1];//Returns the translation
  }
  
  /**
   * Converts a URL to Text
   * @param url that you want to generate a String from
   * @return The generated String
   * @throws java.io.IOException if it cannot complete the request
   */
  private static String urlToText(URL url) throws IOException{
    URLConnection urlConn = url.openConnection(); //Open connection
    //Adding header for user agent is required. Otherwise, Google rejects the request
    urlConn.addRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0) Gecko/20100101 Firefox/4.0"); 
    Reader r = new java.io.InputStreamReader(urlConn.getInputStream(), Charset.forName("UTF-8"));//Gets Data Converts to string
    StringBuilder buf = new StringBuilder();
    while (true) {//Reads String from buffer
      int ch = r.read();
      if (ch < 0)
        break;
      buf.append((char) ch);
    }
    String str = buf.toString();
    return str;
  }


  /**
   * Searches RAWData for Language
   * @param RAWData the raw String directly from Google you want to search through
   * @return The language parsed from the rawData or en-US (English-United States) if Google cannot determine it.
   */
  private static String findLanguage(String rawData){
    for(int i = 0; i+5<rawData.length(); i++){
      boolean dashDetected = rawData.charAt(i+4)=='-';
      if(rawData.charAt(i)==','  && rawData.charAt(i+1)== '"' 
          && ((rawData.charAt(i+4)=='"' && rawData.charAt(i+5)==',')
              || dashDetected)){
        if(dashDetected){
          int lastQuote = rawData.substring(i+2).indexOf('"');
          if(lastQuote>0)
              return rawData.substring(i+2,i+2+lastQuote);
        }
        else{
          String possible = rawData.substring(i+2,i+4);
          if(containsLettersOnly(possible)){//Required due to Google's inconsistent formatting.
            return possible;
          }
        }
      }
    }
    return null;
  }
  
  /**
   * Checks if all characters in text are letters.  
   * @param text The text you want to determine the validity of.
   * @return True if all characters are letter, otherwise false.
   */
  private static boolean containsLettersOnly(String text){
    for(int i = 0; i<text.length(); i++){
      if(!Character.isLetter(text.charAt(i))){
        return false;
      }
    }
    return true;
  }
  
  
}




Java Source Code List

com.skylion.speech.GoogleTranslate.java
com.skylion.speech.Narrator.java
com.skylion.speech.Synthesiser.java
edu.dhbw.andar.ARObject.java
edu.dhbw.andar.ARToolkit.java
edu.dhbw.andar.AndARActivity.java
edu.dhbw.andar.AndARRenderer.java
edu.dhbw.andar.CameraHolder.java
edu.dhbw.andar.CameraParameters.java
edu.dhbw.andar.CameraPreviewHandler.java
edu.dhbw.andar.CameraStatus.java
edu.dhbw.andar.Config.java
edu.dhbw.andar.GenericFunctions.java
edu.dhbw.andar.exceptions.AndARException.java
edu.dhbw.andar.exceptions.AndARRuntimeException.java
edu.dhbw.andar.interfaces.MarkerVisibilityListener.java
edu.dhbw.andar.interfaces.OpenGLRenderer.java
edu.dhbw.andar.interfaces.PreviewFrameSink.java
edu.dhbw.andar.pub.CustomActivity.java
edu.dhbw.andar.pub.CustomObject.java
edu.dhbw.andar.pub.CustomRenderer.java
edu.dhbw.andar.pub.SimpleBox.java
edu.dhbw.andar.util.GraphicsUtil.java
edu.dhbw.andar.util.IO.java
edu.dhbw.andobjviewer.AugmentedModelViewerActivity.java
edu.dhbw.andobjviewer.CheckFileManagerActivity.java
edu.dhbw.andobjviewer.Config.java
edu.dhbw.andobjviewer.InstructionsActivity.java
edu.dhbw.andobjviewer.ModelChooser.java
edu.dhbw.andobjviewer.graphics.LightingRenderer.java
edu.dhbw.andobjviewer.graphics.Model3D.java
edu.dhbw.andobjviewer.graphics.Renderer.java
edu.dhbw.andobjviewer.models.Group.java
edu.dhbw.andobjviewer.models.Material.java
edu.dhbw.andobjviewer.models.Model.java
edu.dhbw.andobjviewer.models.Vector3D.java
edu.dhbw.andobjviewer.parser.MtlParser.java
edu.dhbw.andobjviewer.parser.ObjParser.java
edu.dhbw.andobjviewer.parser.ParseException.java
edu.dhbw.andobjviewer.parser.SimpleTokenizer.java
edu.dhbw.andobjviewer.parser.Util.java
edu.dhbw.andobjviewer.util.ArrayIterator.java
edu.dhbw.andobjviewer.util.AssetsFileUtil.java
edu.dhbw.andobjviewer.util.BaseFileUtil.java
edu.dhbw.andobjviewer.util.FixedPointUtils.java
edu.dhbw.andobjviewer.util.MatrixUtils.java
edu.dhbw.andobjviewer.util.MemUtil.java
edu.dhbw.andobjviewer.util.SDCardFileUtil.java