进入官方:http://api.fanyi.baidu.com/api/trans/product/index
点击立即使用,申请得到appid和密钥
ps:这要用作开发时的常量,若当月翻译字符数≤2百万,当月免费;若超过2百万字符,按照49元/百万字符支付当月全部翻译字符数费用。个人测试还是够用的,如果商用的话请按百度官方的服务协议。
那么好的,下面我简单的说一下,先说签名sign的生成(就是官方要求的参数拼到一起的MD5值)
appid=2015063000000001+q=apple+salt=1435660288+密钥=12345678
上面这一条就是官方要求的参数,分别说明一下:appid跟密钥是申请给的,q是你要翻译的内容,salt是随机数拼到一起可以得到:2015063000000001apple143566028812345678 这些拼到一起,然后把生成的签名结果之和,在https://md5jiami.51240.com/中生成的常规md5加密-32位小写的。就是sign签名了。
完整的请求:(直接在浏览器地址栏测试)
http://api.fanyi.baidu.com/api/trans/vip/translate?q=要翻译的内容&from=auto&to=zh&appid=申请给的&salt=1435660288&sign=签名
ps: from指的是翻译前语种,to指的是翻译后的语种,auto是自动识别,zh是中文。
浏览器返回一个json串:
{"from":"en","to":"zh","trans_result":[{"src":"apple","dst":"\u82f9\u679c"}]}
\u82f9\u679c为unicode编码转换中文为苹果
实验自己的appid跟密钥好用,并且实践成功,下面我们开始写代码。
先从官网的'文档与支持'的一栏,点击'各种语言DEMO',下载Java版。
C:\java\src\com\baidu\translate\demo里面
这三个文件放进工具类的包,会有sgin签名MD5加密,字符串拼接以及随机数的生成的功能,完全不需要自己写,咱们直接写controller层:命名为TranslateController
ps:我是要加一个按钮,把页面上从后台取的内容,翻译成中文,不想操作数据库,就直接在页面取了
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import cn.iqbar.common.utils.TransApi;
@Controller
@RequestMapping(value = "/我是路境")
public class TanslateController {
// 在平台申请的APP_ID 详见 http://api.fanyi.baidu.com/api/trans/product/desktop?req=developer
private static final String APP_ID = "自己去申请自己去填写";
private static final String SECURITY_KEY = "自己去申请自己去填写";
@RequestMapping(value = "/我是路径")
@ResponseBody
@Transactional
public Map translateApi(String s1, String s2){
//s1和s2 是我从前台收的值,
System.out.println(s1);
System.out.println(s2);
TransApi api = new TransApi(APP_ID, SECURITY_KEY);
System.out.println(api.toString()+"接口引用");
Map map=new HashMap();
String transResult1 = api.getTransResult(s1, "auto", "zh");
String transResult2 = api.getTransResult(s2, "auto", "zh");
System.out.println(transResult1);
System.out.println(transResult2);
map.put("homeworkCovered", transResult1);
map.put("homeworkSet", transResult2);
model.addAttribute("trsante", map);
return map;
}
}
jsp用script,ajax实现的命名为baidufanyi.jsp
自己去引script
//初始化按钮ajax显示翻译
$("#btn").click(function() {
//这是我取的值
var homeworkCovered = $("#homeworkCovered").text();
var homeworkSet = $("#homeworkSet").text();
$.ajax({
type: 'post',
url: '/我是路境/我是路径',
data: {
s1: homeworkCovered,
s2: homeworkSet
},
success: function(data) {
var homeC = JSON.parse(data.homeworkCovered);
var homeS = JSON.parse(data.homeworkSet);
console.log(homeC.trans_result[0].dst);
console.log(homeS);
var homeCTag = "Pages/Slides/Topics Covered: " + homeC.trans_result[0].dst + "
";
var homeSTag = "Homework Set: " + homeS.trans_result[0].dst + "
";
//console.log(homeCTag);
//console.log(homeSTag);
$(homeCTag).appendTo("#transCont");
$(homeSTag).appendTo("#transCont");
$("#btn").attr("disabled","true");
},
error: function() {
alert("老师没有留言哦");
}
});
});
好的 这样就可以了 慢慢在控制台调试,可以做个参考例子,也方便我日后查询熟练掌握