一、說明:
本翻譯器是基于有道智云翻譯api實現(xiàn)的翻譯器:https://ai.youdao.com
因此哲嘲,需要先上有道智云注冊一個開發(fā)者應用appKey
二、翻譯器代碼如下:
translator.js
const request = require('request-promise')
var crypto = require('crypto');
/**
* 翻譯器
*/
function Translator() {
this.config = {
from: '',
to: '',
appKey: '',
secretKey: '',
}
}
/**
* md5加密
*/
Translator.prototype.md5 = function md5(str) {
var crypto_md5 = crypto.createHash("md5");
crypto_md5.update(str);
return crypto_md5.digest('hex');
}
/**
* 生成[0,n]區(qū)間的隨機整數(shù)
* 比如生成[0,100]的閉區(qū)間隨機整數(shù),getRandomN(100)
*/
Translator.prototype.getRandomN = function getRandomN(roundTo) {
return Math.round(Math.random() * roundTo);
}
/**
* {a:'111',b:'222'} => a=111&b=222
*/
Translator.prototype.generateUrlParams = function generateUrlParams(_params) {
const paramsData = [];
for (const key in _params) {
if (_params.hasOwnProperty(key)) {
paramsData.push(key + '=' + _params[key]);
}
}
const result = paramsData.join('&');
return result;
}
/**
* 進行翻譯
*/
Translator.prototype.translate = async function (word) {
let youdaoHost = 'http://openapi.youdao.com/api';
// 在get請求中,中文需要進行uri編碼
let encodeURIWord = encodeURI(word);
let salt = this.getRandomN(1000);
let sign = this.md5(this.config.appKey + word + salt + this.config.secretKey);
let paramsJson = {
q: encodeURIWord,
from: this.config.from,
to: this.config.to,
appKey: this.config.appKey,
salt: salt,
sign: sign
}
// let url = `http://openapi.youdao.com/api?q=${encodeURI(q)}&from=${from}&to=${to}&appKey=${appKey}&salt=${salt}&sign=${sign}`;
let url = youdaoHost + '?' + this.generateUrlParams(paramsJson);
let result = await request.get({ url: url });
return result;
}
module.exports = Translator;
三富稻、使用方法
const Translator = require('./src/translator');
let translator = new Translator();
// config the translator
translator.config = {
from: 'zh_CHS', // zh-CHS(中文) || ja(日語) || EN(英文) || fr(法語) ...
to: 'EN',
appKey: 'xxxxxxxxxxxxx', // https://ai.youdao.com 在有道云上進行注冊
secretKey: 'xxxxxxxxxxxxxxxx'
}
async function translateString(str) {
let resultStr = await translator.translate(str)
console.log(resultStr);
}
translateString('你好');