@vitalets/google-translate-api
Advanced tools
Comparing version 8.0.0 to 9.0.0-0
{ | ||
"name": "@vitalets/google-translate-api", | ||
"version": "8.0.0", | ||
"description": "A free and unlimited API for Google Translate", | ||
"main": "index.js", | ||
"version": "9.0.0-0", | ||
"type": "module", | ||
"main": "./dist/cjs/index.js", | ||
"module": "./dist/esm/index.js", | ||
"files": [ | ||
"src", | ||
"dist", | ||
"README.md" | ||
], | ||
"scripts": { | ||
"lint": "xo", | ||
"test": "nyc ava", | ||
"coverage": "nyc report --reporter=text-lcov | coveralls && nyc report --reporter=text-lcov > coverage.lcov && codecov", | ||
"release": "npm run lint && npm test && np --yolo --no-release-draft" | ||
"prepare": "git config core.hooksPath ./.hooks", | ||
"lint": "eslint src test --ext .ts", | ||
"tsc": "tsc --noEmit", | ||
"check": "ts-node-esm check.ts", | ||
"test": "mocha -n loader=ts-node/esm test/setup.ts test/specs/*.ts", | ||
"toc": "markdown-toc README.md -i", | ||
"build:esm": "rm -rf dist/esm && tsc -p tsconfig.build.json", | ||
"build:cjs": "rm -rf dist/cjs && tsc -p tsconfig.build.cjs.json && echo '{\"type\":\"commonjs\"}' > dist/cjs/package.json", | ||
"build": "npm run build:esm && npm run build:cjs", | ||
"release": "npm run lint && npm t && npm run build && np --yolo --no-release-draft" | ||
}, | ||
"husky": { | ||
"hooks": { | ||
"pre-commit": "npm run lint", | ||
"pre-push": "npm run lint && npm test" | ||
} | ||
"dependencies": { | ||
"@types/http-errors": "^1.8.2", | ||
"http-errors": "^2.0.0", | ||
"node-fetch": "^2.6.7" | ||
}, | ||
"devDependencies": { | ||
"@types/mocha": "^10.0.0", | ||
"@types/node": "^18.8.3", | ||
"@types/node-fetch": "^2.6.2", | ||
"@typescript-eslint/eslint-plugin": "^5.39.0", | ||
"@typescript-eslint/parser": "^5.39.0", | ||
"eslint": "^8.25.0", | ||
"eslint-plugin-mocha": "^10.1.0", | ||
"http-proxy-agent": "^5.0.0", | ||
"markdown-toc": "^1.2.0", | ||
"mocha": "^10.1.0", | ||
"np": "^7.6.2", | ||
"ts-node": "^10.9.1", | ||
"typescript": "^4.8.4" | ||
}, | ||
"repository": { | ||
@@ -26,3 +53,2 @@ "type": "git", | ||
"google", | ||
"translate", | ||
"api", | ||
@@ -32,31 +58,3 @@ "free", | ||
], | ||
"author": { | ||
"name": "Matheus Fernandes", | ||
"email": "npm@matheus.top", | ||
"url": "http://matheus.top" | ||
}, | ||
"license": "MIT", | ||
"bugs": { | ||
"url": "https://github.com/vitalets/google-translate-api/issues" | ||
}, | ||
"homepage": "https://github.com/vitalets/google-translate-api#readme", | ||
"dependencies": { | ||
"configstore": "^5.0.1", | ||
"got": "^9.6.0" | ||
}, | ||
"devDependencies": { | ||
"ava": "^3.15.0", | ||
"codecov": "^3.8.1", | ||
"coveralls": "^2.11.11", | ||
"husky": "^3.0.4", | ||
"np": "^7.6.0", | ||
"nyc": "^15.1.0", | ||
"xo": "^0.16.0" | ||
}, | ||
"xo": { | ||
"space": 4, | ||
"parserOptions": { | ||
"ecmaScript": 7 | ||
} | ||
} | ||
"license": "MIT" | ||
} |
212
README.md
# google-translate-api | ||
[![Actions Status](https://github.com/vitalets/google-translate-api/workflows/autotests/badge.svg)](https://github.com/vitalets/google-translate-api/actions) | ||
[![NPM version](https://img.shields.io/npm/v/@vitalets/google-translate-api.svg)](https://www.npmjs.com/package/@vitalets/google-translate-api) | ||
[![XO code style](https://img.shields.io/badge/code_style-XO-5ed9c7.svg)](https://github.com/sindresorhus/xo) | ||
[![Coverage Status](https://coveralls.io/repos/github/vitalets/google-translate-api/badge.svg?branch=master)](https://coveralls.io/github/vitalets/google-translate-api?branch=master) | ||
A **free** and **unlimited** API for Google Translate :dollar: :no_entry_sign: for Node.js. | ||
A **free** and **unlimited** API for Google Translate for Node.js. | ||
## Features | ||
**In version 9+ library was fully rewritten. For legacy documentation please see [legacy branch](https://github.com/vitalets/google-translate-api/tree/legacy).** | ||
- Auto language detection | ||
- Spelling correction | ||
- Language correction | ||
- Fast and reliable – it uses the same servers that [translate.google.com](https://translate.google.com) uses | ||
## Contents | ||
## Why this fork? | ||
This fork of original [matheuss/google-translate-api](https://github.com/matheuss/google-translate-api) contains several improvements: | ||
<!-- toc --> | ||
- New option `client="t|gtx"`. Setting `client="gtx"` seems to work even with outdated token, see [this discussion](https://github.com/matheuss/google-translate-api/issues/79#issuecomment-425679193) for details | ||
- Fixed extraction of TKK ceed from current `https://translate.google.com` sources (via [@vitalets/google-translate-token](https://github.com/vitalets/google-translate-token)) | ||
- Removed unsecure `unsafe-eval` dependency (See [#2](https://github.com/vitalets/google-translate-api/pull/2)) | ||
- Added [daily CI tests](https://travis-ci.org/vitalets/google-translate-api/builds) to get notified if Google API changes | ||
- Added support for custom `tld` (especially to support `translate.google.cn`, see [#7](https://github.com/vitalets/google-translate-api/pull/7)) | ||
- Added support for outputting pronunciation (see [#17](https://github.com/vitalets/google-translate-api/pull/17)) | ||
- Added support for custom [got](https://github.com/sindresorhus/got) options. It allows to use proxy and bypass request limits (see [#25](https://github.com/vitalets/google-translate-api/pull/25)) | ||
- Added support for language extensions from outside of the API (see [#18](https://github.com/vitalets/google-translate-api/pull/18)) | ||
- Added TypeScript definitions (see [#50](https://github.com/vitalets/google-translate-api/pull/50), thanks to [@olavoparno](https://github.com/olavoparno)) | ||
- Migrated to Google's latest batch-style RPC API (see [#60](https://github.com/vitalets/google-translate-api/pull/60), thanks to [@vkedwardli](https://github.com/vkedwardli)) | ||
- [Features](#features) | ||
- [Installation](#installation) | ||
- [Usage](#usage) | ||
* [Usage with proxy](#usage-with-proxy) | ||
* [Usage in react-native](#usage-in-react-native) | ||
* [Usage in browser](#usage-in-browser) | ||
- [API](#api) | ||
- [Related projects](#related-projects) | ||
- [License](#license) | ||
## Install | ||
<!-- tocstop --> | ||
## Features | ||
* auto language detection | ||
* all [Google Translate languages](https://cloud.google.com/translate/docs/languages) supported | ||
* react-native supported | ||
* transliteration | ||
## Installation | ||
``` | ||
@@ -37,161 +38,40 @@ npm install @vitalets/google-translate-api | ||
## Usage | ||
```ts | ||
import { translate } from '@vitalets/google-translate-api'; | ||
From automatic language detection to English: | ||
```js | ||
const translate = require('@vitalets/google-translate-api'); | ||
translate('Ik spreek Engels', {to: 'en'}).then(res => { | ||
console.log(res.text); | ||
//=> I speak English | ||
console.log(res.from.language.iso); | ||
//=> nl | ||
}).catch(err => { | ||
console.error(err); | ||
}); | ||
const { text } = await translate('Привет, мир! Как дела?', { to: 'en' }); | ||
// text => 'Hello World! How are you?' | ||
``` | ||
> Please note that maximum text length for single translation call is **5000** characters. | ||
> In case of longer text you should split it on chunks, see [#20](https://github.com/vitalets/google-translate-api/issues/20). | ||
### Usage with proxy | ||
Google Translate has request limits. If too many requests are made, you can get a 429 error. | ||
You can use **proxy** to bypass them: | ||
From English to Dutch with a typo: | ||
```ts | ||
import { translate } from '@vitalets/google-translate-api'; | ||
import createHttpProxyAgent from 'http-proxy-agent'; | ||
```js | ||
translate('I spea Dutch!', {from: 'en', to: 'nl'}).then(res => { | ||
console.log(res.text); | ||
//=> Ik spreek Nederlands! | ||
console.log(res.from.text.autoCorrected); | ||
//=> true | ||
console.log(res.from.text.value); | ||
//=> I [speak] Dutch! | ||
console.log(res.from.text.didYouMean); | ||
//=> false | ||
}).catch(err => { | ||
console.error(err); | ||
const agent = createHttpProxyAgent('http://103.152.112.162:80'); | ||
const { text } = await translate('Привет, мир!', { | ||
to: 'en', | ||
fetchOptions: { agent } | ||
}); | ||
``` | ||
Sometimes, the API will not use the auto corrected text in the translation: | ||
### Usage in react-native | ||
tbd | ||
```js | ||
translate('I spea Dutch!', {from: 'en', to: 'nl'}).then(res => { | ||
console.log(res); | ||
console.log(res.text); | ||
//=> Ik spea Nederlands! | ||
console.log(res.from.text.autoCorrected); | ||
//=> false | ||
console.log(res.from.text.value); | ||
//=> I [speak] Dutch! | ||
console.log(res.from.text.didYouMean); | ||
//=> true | ||
}).catch(err => { | ||
console.error(err); | ||
}); | ||
``` | ||
### Usage in browser | ||
This library **does not work in browser** because `translate.google.com` does not provide [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) headers allowing access from other domains. | ||
You can also add languages in the code and use them in the translation: | ||
``` js | ||
translate = require('google-translate-api'); | ||
translate.languages['sr-Latn'] = 'Serbian Latin'; | ||
translate('translator', {to: 'sr-Latn'}).then(res => ...); | ||
``` | ||
## Proxy | ||
Google Translate has request limits. If too many requests are made, you can either end up with a 429 or a 503 error. | ||
You can use **proxy** to bypass them: | ||
```js | ||
const tunnel = require('tunnel'); | ||
translate('Ik spreek Engels', {to: 'en'}, { | ||
agent: tunnel.httpsOverHttp({ | ||
proxy: { | ||
host: 'whateverhost', | ||
proxyAuth: 'user:pass', | ||
port: '8080', | ||
headers: { | ||
'User-Agent': 'Node' | ||
} | ||
} | ||
} | ||
)}).then(res => { | ||
// do something | ||
}).catch(err => { | ||
console.error(err); | ||
}); | ||
``` | ||
## Does it work from web page context? | ||
No. `https://translate.google.com` does not provide [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) http headers allowing access from other domains. | ||
## API | ||
tbd | ||
### translate(text, [options], [gotOptions]) | ||
## Related projects | ||
* [matheuss/google-translate-api](https://github.com/matheuss/google-translate-api) - original repo | ||
* [Translateer](https://github.com/Songkeys/Translateer) - uses Puppeteer to access Google Translate API | ||
* [hua1995116/google-translate-open-api](https://github.com/hua1995116/google-translate-open-api) | ||
* [google-translate-api-x](https://github.com/AidanWelch/google-translate-api) | ||
#### text | ||
Type: `string` | ||
The text to be translated | ||
#### options | ||
Type: `object` | ||
##### from | ||
Type: `string` Default: `auto` | ||
The `text` language. Must be `auto` or one of the codes/names (not case sensitive) contained in [languages.js](https://github.com/vitalets/google-translate-api/blob/master/languages.js) | ||
##### to | ||
Type: `string` Default: `en` | ||
The language in which the text should be translated. Must be one of the codes/names (case sensitive!) contained in [languages.js](https://github.com/vitalets/google-translate-api/blob/master/languages.js). | ||
##### raw | ||
Type: `boolean` Default: `false` | ||
If `true`, the returned object will have a `raw` property with the raw response (`string`) from Google Translate. | ||
##### client | ||
Type: `string` Default: `"t"` | ||
Query parameter `client` used in API calls. Can be `t|gtx`. | ||
##### tld | ||
Type: `string` Default: `"com"` | ||
TLD for Google translate host to be used in API calls: `https://translate.google.{tld}`. | ||
#### gotOptions | ||
Type: `object` | ||
The got options: https://github.com/sindresorhus/got#options | ||
### Returns an `object`: | ||
- `text` *(string)* – The translated text. | ||
- `from` *(object)* | ||
- `language` *(object)* | ||
- `didYouMean` *(boolean)* - `true` if the API suggest a correction in the source language | ||
- `iso` *(string)* - The [code of the language](https://github.com/vitalets/google-translate-api/blob/master/languages.js) that the API has recognized in the `text` | ||
- `text` *(object)* | ||
- `autoCorrected` *(boolean)* – `true` if the API has auto corrected the `text` | ||
- `value` *(string)* – The auto corrected `text` or the `text` with suggested corrections | ||
- `didYouMean` *(boolean)* – `true` if the API has suggested corrections to the `text` | ||
- `raw` *(string)* - If `options.raw` is true, the raw response from Google Translate servers. Otherwise, `''`. | ||
Note that `res.from.text` will only be returned if `from.text.autoCorrected` or `from.text.didYouMean` equals to `true`. In this case, it will have the corrections delimited with brackets (`[ ]`): | ||
```js | ||
translate('I spea Dutch').then(res => { | ||
console.log(res.from.text.value); | ||
//=> I [speak] Dutch | ||
}).catch(err => { | ||
console.error(err); | ||
}); | ||
``` | ||
Otherwise, it will be an empty `string` (`''`). | ||
## License | ||
MIT © [Matheus Fernandes](http://matheus.top), forked and maintained by [Vitaliy Potapov](https://github.com/vitalets). |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Network access
Supply chain riskThis module accesses the network.
Found 2 instances in 1 package
No contributors or author data
MaintenancePackage does not specify a list of contributors or an author in package.json.
Found 1 instance in 1 package
No bug tracker
MaintenancePackage does not have a linked bug tracker in package.json.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
No website
QualityPackage does not have a website.
Found 1 instance in 1 package
22
Yes
22250
3
13
318
2
2
77
4
+ Added@types/http-errors@^1.8.2
+ Addedhttp-errors@^2.0.0
+ Addednode-fetch@^2.6.7
+ Added@types/http-errors@1.8.2(transitive)
+ Addeddepd@2.0.0(transitive)
+ Addedhttp-errors@2.0.0(transitive)
+ Addedinherits@2.0.4(transitive)
+ Addednode-fetch@2.7.0(transitive)
+ Addedsetprototypeof@1.2.0(transitive)
+ Addedstatuses@2.0.1(transitive)
+ Addedtoidentifier@1.0.1(transitive)
+ Addedtr46@0.0.3(transitive)
+ Addedwebidl-conversions@3.0.1(transitive)
+ Addedwhatwg-url@5.0.0(transitive)
- Removedconfigstore@^5.0.1
- Removedgot@^9.6.0
- Removed@sindresorhus/is@0.14.0(transitive)
- Removed@szmarczak/http-timer@1.1.2(transitive)
- Removedcacheable-request@6.1.0(transitive)
- Removedclone-response@1.0.3(transitive)
- Removedconfigstore@5.0.1(transitive)
- Removedcrypto-random-string@2.0.0(transitive)
- Removeddecompress-response@3.3.0(transitive)
- Removeddefer-to-connect@1.1.3(transitive)
- Removeddot-prop@5.3.0(transitive)
- Removedduplexer3@0.1.5(transitive)
- Removedend-of-stream@1.4.4(transitive)
- Removedget-stream@4.1.05.2.0(transitive)
- Removedgot@9.6.0(transitive)
- Removedgraceful-fs@4.2.11(transitive)
- Removedhttp-cache-semantics@4.1.1(transitive)
- Removedimurmurhash@0.1.4(transitive)
- Removedis-obj@2.0.0(transitive)
- Removedis-typedarray@1.0.0(transitive)
- Removedjson-buffer@3.0.0(transitive)
- Removedkeyv@3.1.0(transitive)
- Removedlowercase-keys@1.0.12.0.0(transitive)
- Removedmake-dir@3.1.0(transitive)
- Removedmimic-response@1.0.1(transitive)
- Removednormalize-url@4.5.1(transitive)
- Removedonce@1.4.0(transitive)
- Removedp-cancelable@1.1.0(transitive)
- Removedprepend-http@2.0.0(transitive)
- Removedpump@3.0.2(transitive)
- Removedresponselike@1.0.2(transitive)
- Removedsemver@6.3.1(transitive)
- Removedsignal-exit@3.0.7(transitive)
- Removedto-readable-stream@1.0.0(transitive)
- Removedtypedarray-to-buffer@3.1.5(transitive)
- Removedunique-string@2.0.0(transitive)
- Removedurl-parse-lax@3.0.0(transitive)
- Removedwrappy@1.0.2(transitive)
- Removedwrite-file-atomic@3.0.3(transitive)
- Removedxdg-basedir@4.0.0(transitive)