GithubHelp home page GithubHelp logo

baizn / translation.js Goto Github PK

View Code? Open in Web Editor NEW
13.0 2.0 78.0 88 KB

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

License: MIT License

JavaScript 100.00%

translation.js's Introduction

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 版的划词翻译中,我想扩展它的功能,然后发现它完全可以被抽离出来单独维护——于是我就这么做了 :)

translation.js's People

Contributors

lmk123 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.