java 调用google翻译

来源:互联网 发布:淘宝总客服投诉电话 编辑:程序博客网 时间:2024/06/13 23:35

创建包translate,在这个包下创建类及emum如下:

package translate;

/**
 * 谷歌翻译API定义的语言信息。
 * @author lfd 改
 * 2013-10-01
 */
public enum GoogleLanguage {
 AUTO_DETECT(""),
 AFRIKAANS("af"),
 ALBANIAN("sq"),
 AMHARIC("am"),
 ARABIC("ar"),
 ARMENIAN("hy"),
 AZERBAIJANI("az"),
 BASQUE("eu"),
 BELARUSIAN("be"),
 BENGALI("bn"),
 BIHARI("bh"),
 BULGARIAN("bg"),
 BURMESE("my"),
 CATALAN("ca"),
 CHEROKEE("chr"),
 CHINESE("zh"),
 CHINESE_SIMPLIFIED("zh-CN"),
 CHINESE_TRADITIONAL("zh-TW"),
 CROATIAN("hr"),
 CZECH("cs"),
 DANISH("da"),
 DHIVEHI("dv"),
 DUTCH("nl"),
 ENGLISH("en"),
 ESPERANTO("eo"),
 ESTONIAN("et"),
 FILIPINO("tl"),
 FINNISH("fi"),
 FRENCH("fr"),
 GALICIAN("gl"),
 GEORGIAN("ka"),
 GERMAN("de"),
 GREEK("el"),
 GUARANI("gn"),
 GUJARATI("gu"),
 HEBREW("iw"),
 HINDI("hi"),
 HUNGARIAN("hu"),
 ICELANDIC("is"),
 INDONESIAN("id"),
 INUKTITUT("iu"),
 IRISH("ga"),
 ITALIAN("it"),
 JAPANESE("ja"),
 KANNADA("kn"),
 KAZAKH("kk"),
 KHMER("km"),
 KOREAN("ko"),
 KURDISH("ku"),
 KYRGYZ("ky"),
 LAOTHIAN("lo"),
 LATVIAN("lv"),
 LITHUANIAN("lt"),
 MACEDONIAN("mk"),
 MALAY("ms"),
 MALAYALAM("ml"),
 MALTESE("mt"),
 MARATHI("mr"),
 MONGOLIAN("mn"),
 NEPALI("ne"),
 NORWEGIAN("no"),
 ORIYA("or"),
 PASHTO("ps"),
 PERSIAN("fa"),
 POLISH("pl"),
 PORTUGUESE("pt"),
 PUNJABI("pa"),
 ROMANIAN("ro"),
 RUSSIAN("ru"),
 SANSKRIT("sa"),
 SERBIAN("sr"),
 SINDHI("sd"),
 SINHALESE("si"),
 SLOVAK("sk"),
 SLOVENIAN("sl"),
 SPANISH("es"),
 SWAHILI("sw"),
 SWEDISH("sv"),
 TAJIK("tg"),
 TAMIL("ta"),
 TAGALOG("tl"),
 TELUGU("te"),
 THAI("th"),
 TIBETAN("bo"),
 TURKISH("tr"),
 UKRANIAN("uk"),
 URDU("ur"),
 UZBEK("uz"),
 UIGHUR("ug"),
 VIETNAMESE("vi"),
 WELSH("cy"),
 YIDDISH("yi");
 
 /**
  * 谷歌的当前语言的字符串表示形式。
  */
 private final String language;
 
 /**
  * 构造函数
  * @param 语言标识符。
  */
 private GoogleLanguage(final String pLanguage) {
  language = pLanguage;
 }
 
 public static GoogleLanguage fromString(final String pLanguage) {
  for (GoogleLanguage lang : values()) {
   if (pLanguage.equals(lang.toString())) {
    return lang ;
   }
  }
  return null;
 }
 
 /**
  * 返回的字符串表示这种语言。
  * @return 这种语言的字符串表示形式。
  */
 @Override
 public String toString() {
  return language;
 }
}

 

 

在这个包下创建接口如下:

package translate;

/**
 * 提供系统的语言翻译功能
 * @author lfd
 * 2013-10-01
 */
public interface TranslateUtil {
 
 /**
  * http请求的类型(如"text/html" , "text/plain")
  * @param type 请求的类型
  */
 public void setContentType(String type) ;
 
 /**
  * 翻译语言(自动识别源语言)
  * @param text 翻译的内容
  * @param srcLang 源语言
  * @param targetLang 目标语言
  * @return 目标语言内容
  */
 public String translate(final String text, final String targetLang) throws Exception ;
 
 /**
  * 翻译语言(自动识别源语言)
  * @param texts 翻译的内容数组
  * @param targetLang 目标语言
  * @return 目标语言内容
  */
 public String[] translate(final String[] texts, final String targetLang) throws Exception ;
 
 /**
  * 翻译语言
  * @param text 翻译的内容
  * @param srcLang 源语言
  * @param targetLang 目标语言
  * @return 目标语言内容
  */
 public String translate(final String text, final String srcLang, final String targetLang) throws Exception ;
 
 /**
  * 翻译语言
  * @param texts 翻译的内容数组
  * @param srcLang 源语言
  * @param targetLang 目标语言
  * @return 目标语言内容
  */
 public String[] translate(final String[] texts, final String srcLang, final String targetLang) throws Exception ;
}

 

三、创建继承接口的类

package translate;

 

 


import org.apache.velocity.runtime.directive.Define;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.omg.CORBA.portable.ApplicationException;

/**
 * 使用google进行翻译
 * @author lfd
 * 2013-10-01
 */
public class TranslateToGoogle implements TranslateUtil {
 
 private final String ID_RESULTBOX = "result_box";
 
 private String type = "" ;

 public void setContentType(String type) {
  this.type = type ;
 }

 public String translate(String text, String targetLang) throws Exception {
  return translate(text, "", targetLang) ;
 }

 public String[] translate(String[] texts, String targetLang)
   throws Exception {
  return translate(texts, "", targetLang) ;
 }

 public String translate(String text, String srcLang, String targetLang)
   throws Exception {
  return execute(text, srcLang, targetLang) ;
 }

 public String[] translate(String[] texts, String srcLang, String targetLang)
   throws Exception {
  
  StringBuilder content = new StringBuilder() ;
  int size = texts.length ;
  for(int i = 0 ; i < size ; i++) {
   if(i < size-1) {
    content.append(texts[i]).append("{*}") ;
   } else {
    content.append(texts[i]) ;
   }
  }
  String[] temps = execute(content.toString(),srcLang , targetLang).split("\\{\\*\\}") ;
  size = temps.length ;
  //去除左右空白字符
  for (int i = 0; i < size; i++) {
   temps[i] = temps[i].trim() ;
  }
  return temps ;
 }
 
 /**
  * 发送翻译请求
  * @param text 要翻译的内容
  * @param srcLang 源语言
  * @param targetLang 目标语言
  * @return 目标语言
  * @throws Exception 翻译失败
  */
 private String execute(final String text, final String srcLang,
   final String targetLang) throws Exception {
  inspection(srcLang, targetLang) ;
  Document document = Jsoup.connect("http://translate.google.cn")
    .data("sl", srcLang)
    .data("ie", "UTF-8")
    .data("oe", "UTF-8")
    .data("text", text)
    .data("tl", targetLang)
    //.data("ie", Define.getEncoding())//.getEncoding())
    .userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.77 Safari/535.7")
    .cookie("Cookie", "Cookie PREF=ID=8daa1f767f10d1fe:U=f5ac701cf7d3f2e0:FF=0:LD=en:CR=2:TM=1277174286:LM=1289370601:S=q7yslRWEZs3uK1H8; NID=39=UO-TWo9HzzjHc-d_wYm7BVR1cH33KpqaN5h5877_i29nERA93FeG1GSuV3ZSvsOx8D-TnHKpB9m0KhZRH8U9uPwoE-arYd0bAyAlILyXZxLO2_TyGQhJpcMiOLVEuCpq; SID=DQAAAHoAAADMlGzeKhnGkbkIJ36tVO0ZPXgmQ6Cth7Oa6geyyE1WJooW8P01uKUHNrsRkjggvFMAWIWB9J5i18z0F6GjC_oV79mSwXEDGuRFGhRnDyJdid3ptjFW0pIyt4_2D6AMIqtOWF71aWdvY7IvAU1AWMNs8fBZHAOgRqtf3aCUkr36ZA; HSID=A6-YJTnhjBdFWukoR")
    .timeout(2000000)
    .post();
  Element element = document.getElementById(ID_RESULTBOX);
  return element.text() ;
 }
 
 /**
  * 检查Google是否支持语言.
  */
 private void inspection(String srcLang, String targetLang) {
  if(!"".equals(this.type)) setContentType(type) ;
  if(GoogleLanguage.fromString(srcLang) == null || GoogleLanguage.fromString(targetLang) == null) {
   //throw new ApplicationException("Google不支持的语言") ;
  }
 }
 public static void main(String[] args) {
  TranslateUtil translate = new TranslateToGoogle() ;
  try {
   System.out.println(translate.translate("把那七条加了事件的流程名称发给我一下,你就去龙浩电脑上把他写在记事本里面的发给我就可以了", "zh-TW")) ;
  } catch (Exception e) {
   e.printStackTrace();
  }
 }

}

 

然后运行上面类的main函数,打印如下:

把那七條加了事件的流程名稱發給我一下,你就去龍浩電腦上把他寫在記事本里面的發給我就可以了 

0 0