@kabeep/node-translate

logo

A powerful, secure and feature-rich api via Google Translation.

NodeJS License NPM Codecov Codacy CircleCI

English | ็ฎ€ไฝ“ไธญๆ–‡

Alt

Thank you to matheuss and iamtraction for writing the original version of this library. Due to the original authors no longer actively maintaining it, I rewrote the library using TypeScript and ISO-639-1. This rewrite has made the program more secure, provided richer translation results, and resolved program anomalies.

  • Adaptive native language translation.
  • Synonyms, polysemous explanations, and example sentences.
  • Timeout and retry parameters in complex networks.
  • Support for querying language, language code, native language, and adaptive language lists.
  • Support for ISO-639-1, minority languages, special languages, and the latest changes on Wikipedia.
  • Secure API types and comprehensive coverage.
  • Controllable error states.
npm install @kabeep/node-translate --save
yarn add @kabeep/node-translate
pnpm add @kabeep/node-translate
import translate from '@kabeep/node-translate';
translate(text, options)
.then(console.log)
.catch(console.error);
Parameter Type Optional Default Description
text string No - Source text, phrase or word.
options TranslateOptions - - The options for translating.
options.from LanguageCode, auto or string Yes 'auto' The language name/ISO 639-1 code to translate from. If none is given, it will auto-detect the source language.
options.to LanguageCode, auto or string Yes 'auto' The language name/ISO 639-1 code to translate to. If none is given, it will translate to native environment language.
options.raw boolean Yes false If true, it will return the raw output that was received from Google Translation Api.
options.timeout number Yes 30_000 Timeout duration for the translation request in milliseconds.
options.retry number Yes 0 Retry attempts for the translation request in case of failure.

Response Object:

Key Type Description
text string Translation summary, long text will be truncated, please use to.text.value for complete results.
from Record -
from.language Record -
from.language.didYouMean boolean Indicates whether there is a language suggestion.
from.language.iso string The ISO code of the detected language.
from.text Record -
from.text.autoCorrected boolean Indicates whether there was an autocorrection.
from.text.value string Source text.
from.text.phonetics string Phonetic transcription of the source text.
from.text.didYouMean boolean Indicates whether a suggestion for the source text.
from.synonyms string[] Synonyms of the source word.
from.sentences string[] Example sentence of the source word.
to Record -
to.text Record -
to.text.phonetics string Phonetic transcription of the translated text.
to.text.value string Translated text.
to.polysemy Array<{ label: string; children: string[] }> Polysemy information for the translated text.
raw string The raw response body from the translation request. Only returned if options.raw is true in the request options.

import { iso6391X } from '@kabeep/node-translate';
iso6391X.getName(code);
Parameter Type Optional Default Description
code string No - Iso-639-1 language code or google translation language code.

iso6391X.getAllNames();

iso6391X.getNativeName(code);
Parameter Type Optional Default Description
code string No - Iso-639-1 language code or google translation language code.

iso6391X.getAllNativeNames();

iso6391X.getCode(name);
Parameter Type Optional Default Description
name string No - Iso-639-1 language name or google translation language name.

iso6391X.getAllCodes();

iso6391X.getLanguages(codes);
Parameter Type Optional Default Description
codes string[] No - Iso-639-1 language codes or google translation language codes.

iso6391X.getAllDetections();

View Case

import translate from '@kabeep/node-translate';

// Simple example
translate('ไพ‹ๅญ', { to: 'en' }).then(res => {
// => example
console.log(res.to.text.value);
});

View Case

import translate from '@kabeep/node-translate';

// Language name and capitalized correction
translate('ไพ‹ๅญ', { to: 'ENGlish' }).then(res => {
// => example
console.log(res.text);
});

View Case

import translate from '@kabeep/node-translate';

// Use `auto` or leave the `from` parameter empty to detect language by adativeness
// Use `auto` or leave the `to` parameter empty to detect language by os (`en` for example)
translate('ไพ‹ๅญ').then(res => {
// => example
console.log(res.text);
});

View Case

import translate from '@kabeep/node-translate';

// Output phonetic transcription of the source text and the translated text
translate('ไพ‹ๅญ', { to: 'ja' }).then(res => {
// => Lรฌzi
console.log(res.from.text.phonetics);
// => Rei
console.log(res.to.text.phonetics);
});

View Case

import translate from '@kabeep/node-translate';

// Output synonyms of the source word
translate('ไพ‹ๅญ', { to: 'en' }).then(res => {
// =>
// [
// 'ไพ‹',
// 'ไพ‹ๅญ',
// '่Œƒไพ‹',
// 'ๆฆœๆ ท',
// 'ๅ…ธ่Œƒ',
// 'ไพ‹่ฏ',
// ]
console.log(res.from.synonyms);
});

View Case

import translate from '@kabeep/node-translate';

// Output example sentence of the source word
translate('example', { to: 'zh' }).then(res => {
// => [
// "it is vitally important that parents should set an [example]",
// "she followed her brother's [example] and deserted her family",
// "it's a good [example] of how European action can produce results",
// ]
console.log(res.from.sentences);
});

View Case

import translate from '@kabeep/node-translate';

// Output polysemy information for the translated text
translate('ไพ‹ๅญ', { to: 'en' }).then(res => {
// => [{
// label: 'noun',
// children: [
// 'example',
// 'case',
// 'instance',
// ],
// }]
console.log(res.to.polysemy);
});

View Case

import translate from '@kabeep/node-translate';

// Automatically detect and use the correct source text of suggested
translate('Thunk you', { from: 'en', to: 'zh' }).then(res => {
// => ่ฐข่ฐขไฝ 
console.log(res.to.text.value);
// => true
console.log(res.from.text.didYouMean);
});

View Case

import translate from '@kabeep/node-translate';

// Automatically correct spelling errors in the source text
translate('Thnak you', { from: 'en', to: 'zh' }).then(res => {
// => ่ฐข่ฐข
console.log(res.to.text.value);
// => true
console.log(res.from.text.autoCorrected);
});

View Case

import translate from '@kabeep/node-translate';

// Automatically detect and use correct source language codes of suggested
translate('example', { from: 'zh', to: 'en' }).then(res => {
// => en
console.log(res.from.language.iso);
// => true
console.log(res.from.language.didYouMean);
});

// Automatically detect and use the correct source text of suggested
translate('Thunk you', { from: 'en', to: 'zh' }).then(res => {
// => ่ฐข่ฐขไฝ 
console.log(res.to.text.value);
// => true
console.log(res.from.text.didYouMean);
});

View Case

import translate from '@kabeep/node-translate';

// Retry attempts for the translation request in case of failure (with a maximum of three requests)
translate('ไพ‹ๅญ', { to: 'en', retry: 2, timeout: 100 }).catch((err) => {
// => ETIMEDOUT - The timeout limits was reached
// => ECONNRESET - The connection was forcibly closed
// => EADDRINUSE - Could not bind to any free port
// => ECONNREFUSED - The connection was refused by the server
// => EPIPE - The remote side of the stream being written has been closed
// => ENOTFOUND - Could not resolve the hostname to an IP address
// => ENETUNREACH - No internet connection
// => EAI_AGAIN - DNS lookup timed out
// => EPARSE - Unexpected API response data
// => EVALIDATION - Illegal language code
console.log(err.message);
});

View Case

import { iso6391X, LanguageCode, LanguageOption } from '@kabeep/node-translate';

// => en
console.log(iso6391X.getCode('english'));

// => ['aa', 'ab', ... 199 more items]
console.log(iso6391X.getAllCodes());

// => English
console.log(iso6391X.getName('en'));

// => ['Afar', 'Abkhaz', ... 199 more items]
console.log(iso6391X.getAllNames());

// => ไธญๆ–‡
console.log(iso6391X.getNativeName('zh'));

// => ['Afaraf', 'ะฐางััƒะฐ ะฑั‹ะทัˆำ™ะฐ', ... 199 more items]
console.log(iso6391X.getAllNativeNames());

// => [
// { code: 'en', name: 'English', nativeName: 'English' },
// { code: 'zh', name: 'Chinese', nativeName: 'ไธญๆ–‡' },
// ... 6 more items
// ]
console.log(iso6391X.getAllDetections());

// => [
// { code: 'en', name: 'English', nativeName: 'English' },
// { code: 'zh', name: 'Chinese', nativeName: 'ไธญๆ–‡' },
// ]
console.log(iso6391X.getLanguages(['en', 'zh']));

// => true
console.log(iso6391X.validate('en'));
// => false
console.log(iso6391X.validate('english'));
  • google-translate-api - A free and unlimited API for Google Translate ๐Ÿ’ต๐Ÿšซ
  • google-translate - ๐Ÿˆฏ A Node.JS library to consume Google Translate API for free.

Contributions via Pull Requests or Issues are welcome.

This project is licensed under the MIT License. See the LICENSE file for details.