nodejs 使用百度翻译 API
文章目录
博客(网站)中需要对文章标题进行翻译成英文显示,要求可以批量翻译。
这里使用 nodejs 来对指定内容进行翻译,主要用到的知识点有两个:
- 使用百度翻译 API:http://fanyi.baidu.com/v2transapi
- 使用 node 中的 http.request 接口
1. 百度 API
地址为:http://fanyi.baidu.com/v2transapi
方法:POST
参数格式:
1 2 3 4 5 |
{
from: 'zh',
to: 'en',
query: '这里是内容'
} |
from:表示源语言(zh表示中文)
to:表示想要翻译的语言(en表示为英文)
query:表示需要翻译的内容
2. http.request 接口
http.request(options, callback)
- host: A domain name or IP address of the server to issue the request to. Defaults to ‘localhost’.
- hostname: To support url.parse() hostname is preferred over host
- port: Port of remote server. Defaults to 80.
- localAddress: Local interface to bind for network connections.
- socketPath: Unix Domain Socket (use one of host:port or socketPath)
- method: A string specifying the HTTP request method. Defaults to ‘GET’.
- path: Request path. Defaults to ‘/’. Should include query string if any. E.G. ‘/index.html?page=12’
- headers: An object containing request headers.
- auth: Basic authentication i.e. ‘user:password’ to compute an Authorization header.
- agent: Controls Agent behavior.
3. 实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
function translate(query, callback) {
var params = {
from: 'zh',
to: 'en',
query: query
},
data = querystring.stringify(params);
options = {
host: 'fanyi.baidu.com',
port: 80,
path: '/v2transapi',
method: 'POST',
headers: {
'Content-Type':'application/x-www-form-urlencoded',
'Content-Length': data.length
}
};
var req = http.request(options, function(res) {
var result = '';
res.setEncoding('utf8');
res.on('data', function(data) {
result += data;
});
res.on('end', function() {
var obj = JSON.parse(result),
str = obj.trans_result.data[0].dst;
str = str.replace(/\"/g, '');
str = str.toLowerCase().split(' ').join('_');
console.log(str);
});
});
req.on('error', function(err) {
console.log(err);
setTimeout(function() {
translation(query, callback);
}, 3000);
});
req.write(data);
req.end();
} |
文章作者 wenzhixin
上次更新 2013-11-13