Skip to content

用同一个方法调用多种翻译接口如百度翻译、谷歌翻译、必应翻译等。

License

Notifications You must be signed in to change notification settings

baizn/translation.js

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

65 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

translation.js

Build Status Coverage Status dependencies Status devDependencies Status NPM Version

收集多种翻译接口并用同一个 API 调用。

特点

统一接口调用方式

互联网上有很多可供免费使用的翻译接口,比如百度翻译、谷歌翻译、有道翻译、必应翻译等等,它们的接口不尽相同,但原理都是发起 HTTP 请求获取翻译结果。translation.js 的目标就是统一这些接口的调用方式,可以使用一种方法调用不同的多个接口。借助于 BrowserifySuperAgent 的力量,它可以同时运行在 node.js 与浏览器端。

负载均衡

以有道翻译接口为例,你可以申请多个 apiKey 在 translation.js 中生成多个翻译实例,那么调用有道翻译时, translation.js 会轮流使用各个实例进行翻译。这样做能有效降低由于使用次数过多而导致 apiKey 被封禁的风险。

自定义翻译接口

如果某一个翻译接口没有被添加,你也可以很方便的自定义翻译接口。欢迎提交 PR 添加更多的翻译接口!

使用示例

const Translation = require('translation.js'),
      t = new Translation();

t.create('BaiDu');
t.create('YouDao',{ apiKey:'key', keyFrom:'from' });
t.create('Google');
t.create('GoogleCN');
t.create('Bing');
// 暂时只集成了上面这些翻译接口

// 翻译
t.translate({ api:'BaiDu', text:'test' }).then(resultObj => console.dir(resultObj) , errMsg => console.log(errMsg));

// 获取这段文本的语音地址
t.audio({ api:'BaiDu', text:'test' }).then(audioUrl => console.log(audioUrl) , errMsg => console.log(errMsg));

// 检测语种
t.detect({ api:'BaiDu', text:'test' }).then(lan => console.log(lan) , errMsg => console.log(errMsg));

内置的翻译接口

translation.js 内置了五种翻译接口:有道翻译百度翻译必应翻译谷歌翻译谷歌国内翻译。其中,只有有道翻译使用了官方的 API 接口,其它翻译都是使用各自的网页翻译里的翻译接口——因为官方发布的 API 接口都是要收费的,并且会有调用频率限制。

也就是说,只有有道翻译是需要 apiKeykeyFrom 参数的,其它翻译接口只需要创建一个实例即可。

另外,谷歌翻译与谷歌国内翻译返回的结果是完全一样的,只有一点不同:谷歌翻译需要翻墙使用,而谷歌国内翻译不需要。

自定义翻译接口

  1. 参照 lib/youdao.js 写你自己的翻译接口构造函数。
  2. 将你的构造函数设置为 translation.js 的一个属性:Translation.YourAPI = YourAPI;
  3. 创建你的翻译接口实例:const t = new Translation; t.create('YourAPI');

然后你就可以调用自己的翻译接口了:t.translate({api:'YourAPI',text:'test'});

在浏览器中使用

载入 browser/translation.js ,构造函数会定义为全局变量 Translation

注意:内置的翻译接口都不支持 CORS,请确保浏览器端的运行环境允许跨域,例如你可以在 Chrome 扩展程序 中使用。

许可

MIT

One More Thing...

这个项目原本是划词翻译的一部分,被用于统一翻译接口的调用方式;在开发 v6.0 版的划词翻译中,我想扩展它的功能,然后发现它完全可以被抽离出来单独维护——于是我就这么做了 :)

About

用同一个方法调用多种翻译接口如百度翻译、谷歌翻译、必应翻译等。

Resources

License

Stars

Watchers

Forks

Packages

No packages published