Free Extended Google Translate API - get word definitions, examples, synonyms and a lot more
- Fix word type being null
- Using code from @vitalets/google-translate-api, as the request to Google Translate and the responce changed.
- Change the available settings options, as the response from Google Translate has changed -
collocations
are not available anymore, andsynonyms
are changed todefinitionSynonyms
and they are stored inside the definitions (see the API for new Fields)
-
Fast and efficient - each request consumes about 1.5 Kb
-
Rich word information - definitions, examples, synonyms, collocations and multiple translations
-
Uses the same request that translate.google.com do
npm i google-translate-extended-api
The first argument is query (it can be a single word or a sentence).
The second argument is a source language of query, third - desired translation language.
The fourth is optional - it is dataOptions
object.
const translate = require('google-translate-extended-api');
translate("parlous", "en", "de").then((res) => {
console.log(JSON.stringify(res, undefined, 2));
}).catch(console.log);
Result is:
{
"word": "parlous",
"translation": "parlous",
"wordTranscription": "ˈpärləs",
"translationTranscription": null,
"translations": {
"adjective": [
"gefährlich",
"schlimm"
]
},
"definitions": {
"adjective": [
"full of danger or uncertainty; precarious."
],
"adverb": [
"greatly or excessively."
]
},
"examples": [
"And how do you sap the energy of the insurgency when the parlous state of the economy keeps everyone desperately poor?",
"Finally, I want to talk quite seriously about the parlous state of politics in this House.",
"Is the state of American political fiction really so parlous perilous?"
]
}
The list of all available languages is available here. Use 'auto' as a source language to use Google's language detection.
Or you can disable examples using dataOptions
object:
translate("dog", "en", "de", {examples: false}).then((res) => {
console.log(JSON.stringify(res, undefined, 2));
}).catch(console.log);
Which yields:
{
"word": "dog",
"translation": "Hund",
"wordTranscription": "dôg",
"translationTranscription": null,
"translations": {
"noun": [
"Hund",
"Rüde",
"Pleite"
]
},
"definitions": {
"noun": [
"a domesticated carnivorous mammal that typically has a long snout, an acute sense of smell, and a barking, howling, or whining voice. It is widely kept as a pet or for work or field sports.",
"a person regarded as unpleasant, contemptible, or wicked (used as a term of abuse)."
],
"verb": [
"follow (someone or their movements) closely and persistently.",
"act lazily; fail to try one's hardest."
]
}
}
text
:String
- text to be translated (if you want to get detailed translations and definitions it usually should be a single word)sourceLang
,destLang
:String
- ISO code of source and desired languages of your text. Full list is here.dataOptions
:Object
- see here. If you pass wrong fields to the dataOptions object, the program generates a warning.
returns Promise that:
- resolves with
Response Object
(Take a look atResponse Object
) - or rejects with Error (when request to translate.google.com failed) that have the following properties:
- message - an Error message
- statusCode - status code of the bad request
returnRawResponse
: Boolean - if this flag is chosen, then the Result Object will be the raw data from request to translate.google.com.detailedTranslations
: BooleandefinitionSynonyms
: Boolean - synonyms that are available for each of the definitions. Set this field to true if you want to get them.detailedTranslationsSynonyms
: Boolean - almost each detailed translation contains synonyms. Set this field to true if you want to get them.definitions
: BooleandefinitionExamples
: Boolean - almost each definition contains example(s). Set this field to true if you want to get them.examples
: BooleanremoveStyles
: Boolean - google translate returns the word examples with the word surrounded by<b>
,</b>
. SettingremoveStyles
to true removes all HTML styles from the examples.
defaultDataOptions = {
returnRawResponse: false,
detailedTranslations: true,
definitionSynonyms: false,
detailedTranslationsSynonyms: false,
definitions: true,
definitionExamples: false,
examples: true,
removeStyles: true
}
You can always change defaults like this:
const translate = require('extended-google-translate-api');
translate.defaultDataOptions.definitions = true;
if (dataOptions.returnRawResponse === true
) then the result will be the raw data from request to translate.google.com.
Otherwise:
This object always contains the following fields:
word
: String - the word itselftranslation
: String - Google Translate primary translationwordTranscription
: String - the transcription of the wordtranslationTranscription
: String - the transcription of the main translation
Availability of other fields depends on dataOptions
Object, the third argument of translate
function
-
dataOption.detailedTranslations === true
Field:
translations
: Object
The keys of this object are word types (e.g.noun
,verb
etc.).
Each key contains an array of translations (String
) or ifdataOption.detailedTranslationsSynonyms === true
- an array of the following Objectstranslation
: Stringsynonyms
: [String]frequency
: Number - the frequency of this translation (1, 2, 3). 1 means the most frequently, 3 - the least frequent words.
Examples: (some results was omitted for the sake of simplicity)
dataOption.detailedTranslationsSynonyms === false
"translations": { "noun": [ "Hund", "Rüde", ]
dataOption.detailedTranslationsSynonyms === true
"translations": { "noun": [ { "translation": "Hund", "synonyms": [ "dog", "hound" ], "frequency": 1 }, { "translation": "Rüde", "synonyms": [ "male", "dog" ], "frequency": 3 } ] }
-
dataObject.definitions === true
Field:definitions
: Object
The keys of this object are word types (e.g.noun
,verb
etc.).
Each key contains an array of definitions (String
) or ifdataOptions.definitionExamples === true
- an array of the following objects:definition
: Stringexample
: String
SettingdataOptions.definitionExamples === true
also adds thesynonyms
field to the object.synonyms
field is an object, the keys of which denote the type of the synonyms. The regular ones are stored under the keynormal
, some other possible tags are for instanceinformal
,formal
. The synonyms of each type are store in a string array. Examples:dataOptions.definitionExamples === true
"definitions": { "noun": [ "a domesticated carnivorous mammal that typically has a long snout, an acute sense of smell, and a barking, howling, or whining voice. It is widely kept as a pet or for work or field sports.", "a person regarded as unpleasant, contemptible, or wicked (used as a term of abuse).", ], "verb": [ "follow (someone or their movements) closely and persistently.", "act lazily; fail to try one's hardest.", ] }
dataOptions.definitionExamples === false
"definitions": { "noun": [ { "definition": "a domesticated carnivorous mammal that typically has a long snout, an acute sense of smell, and a barking, howling, or whining voice. It is widely kept as a pet or for work or field sports.", "example": "Shouts mingle with the barking and howling of dogs ." }, { "definition": "a person regarded as unpleasant, contemptible, or wicked (used as a term of abuse).", "example": "come out, Michael, you dog!" } ], "verb": [ { "definition": "follow (someone or their movements) closely and persistently.", "example": "photographers seemed to dog her every step" }, { "definition": "act lazily; fail to try one's hardest.", "example": "He entered the season with a reputation for dogging it when he wasn't the primary receiver." } ] }
dataOptions.definitionSynonyms === true
"definitions": {
"noun": [
{
"definition": "a domesticated carnivorous mammal that typically has a long snout, an acute sense of smell, nonretractable claws, and a barking, howling, or whining voice.",
"synonyms": {
"normal": [
"canine",
"hound"
],
"informal": [
"doggy",
"pooch",
"mutt"
]
}
},
{
"definition": "a mechanical device for gripping."
},
{
"definition": "short for firedog."
}
],
"verb": [
{
"definition": "follow (someone or their movements) closely and persistently.",
"example": "photographers seemed to dog her every step",
"synonyms": {
"normal": [
"pursue",
"follow",
"stalk",
"track",
"haunt"
],
"informal": [
"tail"
]
}
}
]
}
-
dataOptions.examples === true
Field:examples
: [String]
The array contains all examples for the word.
ifdataOptions.removeStyles === false
then the word will be surrounded by<b>
,<\b>
Examples:dataOptions.removeStyles === true
"examples": [ "One of the great mysteries of Australian political life is why a man who is about to dump a dog of a tax system on an unsuspecting public should appear so smug?", "In order to get him to commit you have to treat him like a dog .", "It is a dog of a day, relentless rain and biting cold fraying the nerve ends of men who like to be in perpetual motion.", "During the Second World War, he treated Sinclair like a dog .", "a dog fox" ]
dataOptions.removeStyles === false
"examples": [ "One of the great mysteries of Australian political life is why a man who is about to dump a <b>dog</b> of a tax system on an unsuspecting public should appear so smug?", "In order to get him to commit you have to treat him like a <b>dog</b> .", "It is a <b>dog</b> of a day, relentless rain and biting cold fraying the nerve ends of men who like to be in perpetual motion.", "During the Second World War, he treated Sinclair like a <b>dog</b> .", "a <b>dog</b> fox" ]
If you see a mistake in README, have a question or encountered a problem - please open an issue here or write me at freddie.dewitt@yandex.com