百度没有提供直接可用的翻译api,有道倒是有,不过只能英译中,不支持其他语言。但是百度自己有个翻译服务,http://fanyi.baidu.com/,使用的时候,页面并不会刷新,而是用ajax调用了一个翻译API,分析了一下,这个api地址是http://fanyi.baidu.com/transapi,接受三个参数,from,to,query分别是源语言,目标语言,待翻译文本。 简单封装了一下,默认中译英,要改其他语言,可以把参数提出来:
package com.pocketdigi.english;
import java.net.URLEncoder;
import model.TranslateMode;
import com.google.gson.Gson;
import common.HttpGet;
public class TranslateApi {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String dst=translate("百度翻译API测试");
System.out.println(dst);
}
public static String translate(String source)
{
String api_url;
try {
api_url = new StringBuilder("http://fanyi.baidu.com/transapi?from=zh&to=en&query=")
.append(URLEncoder.encode(source,"utf-8")).toString();
String json=HttpGet.getHtml(api_url, "utf-8");
Gson gson=new Gson();
TranslateMode translateMode=gson.fromJson(json, TranslateMode.class);
if(translateMode!=null&&translateMode.getData()!=null&&translateMode.getData().size()==1)
{
return translateMode.getData().get(0).getDst();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}
TranslateMode:
package model;
import java.util.List;
public class TranslateMode {
String from,to;
List data;
public class Data{
String dst,src;
public String getDst() {
return dst;
}
public void setDst(String dst) {
this.dst = dst;
}
public String getSrc() {
return src;
}
public void setSrc(String src) {
this.src = src;
}
}
public String getFrom() {
return from;
}
public void setFrom(String from) {
this.from = from;
}
public String getTo() {
return to;
}
public void setTo(String to) {
this.to = to;
}
public List getData() {
return data;
}
public void setData(List data) {
this.data = data;
}
}