anylang
Version:
A translator's kit that uses the free APIs of Google Translate, Yandex, Bing, ChatGPT, and other LLMs
98 lines (96 loc) • 10.6 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.ReversoTranslator = void 0;
var _zod = _interopRequireDefault(require("zod"));
var _BaseTranslator = require("../BaseTranslator");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
/**
* This module did not test too ago
*/
class ReversoTranslator extends _BaseTranslator.BaseTranslator {
constructor() {
super(...arguments);
this.langMap = {
en: 'eng',
ar: 'ara',
nl: 'dut',
he: 'heb',
es: 'spa',
it: 'ita',
zh: 'chi',
de: 'ger',
pl: 'pol',
pt: 'por',
ro: 'rum',
ru: 'rus',
tr: 'tur',
fr: 'fra',
ja: 'jpn'
};
}
static isSupportedAutoFrom() {
return false;
}
static getSupportedLanguages() {
// eslint-disable
// prettier-ignore
return ['en', 'ar', 'nl', 'he', 'es', 'it', 'zh', 'de', 'pl', 'pt', 'ro', 'ru', 'tr', 'fr', 'ja'];
// eslint-enable
}
getLengthLimit() {
return 5000;
}
getRequestsTimeout() {
return 1000;
}
checkLimitExceeding(text) {
if (Array.isArray(text)) {
const arrayLen = text.reduce((acc, text) => acc + text.length, 0);
const extra = arrayLen - this.getLengthLimit();
return extra > 0 ? extra : 0;
} else {
const extra = text.length - this.getLengthLimit();
return extra > 0 ? extra : 0;
}
}
translate(text, from, to) {
const localFrom = this.langMap[from];
const localTo = this.langMap[to];
const data = {
input: text,
from: localFrom,
to: localTo,
format: 'text',
options: {
origin: 'translation.web',
sentenceSplitter: true,
contextResults: true,
languageDetection: false
}
};
const apiHost = 'https://api.reverso.net/translate/v1/translation';
return this.fetch(apiHost, {
responseType: 'json',
method: 'POST',
headers: Object.assign({
'Content-Type': 'application/json; charset=utf-8'
}, this.options.headers),
body: JSON.stringify(data)
}).then(rsp => {
const response = _zod.default.object({
translation: _zod.default.string().array()
}).parse(rsp.data, {
error: () => 'Unexpected response format'
});
return response.translation.join('');
});
}
translateBatch(text, from, to) {
return Promise.all(text.map(text => this.translate(text, from, to)));
}
}
exports.ReversoTranslator = ReversoTranslator;
ReversoTranslator.translatorName = 'ReversoTranslator (public)';
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRvcnMvdW5zdGFibGUvUmV2ZXJzb1RyYW5zbGF0b3IuanMiLCJuYW1lcyI6WyJfem9kIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfQmFzZVRyYW5zbGF0b3IiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJSZXZlcnNvVHJhbnNsYXRvciIsIkJhc2VUcmFuc2xhdG9yIiwiY29uc3RydWN0b3IiLCJsYW5nTWFwIiwiZW4iLCJhciIsIm5sIiwiaGUiLCJlcyIsIml0IiwiemgiLCJkZSIsInBsIiwicHQiLCJybyIsInJ1IiwidHIiLCJmciIsImphIiwiaXNTdXBwb3J0ZWRBdXRvRnJvbSIsImdldFN1cHBvcnRlZExhbmd1YWdlcyIsImdldExlbmd0aExpbWl0IiwiZ2V0UmVxdWVzdHNUaW1lb3V0IiwiY2hlY2tMaW1pdEV4Y2VlZGluZyIsInRleHQiLCJBcnJheSIsImlzQXJyYXkiLCJhcnJheUxlbiIsInJlZHVjZSIsImFjYyIsImxlbmd0aCIsImV4dHJhIiwidHJhbnNsYXRlIiwiZnJvbSIsInRvIiwibG9jYWxGcm9tIiwibG9jYWxUbyIsImRhdGEiLCJpbnB1dCIsImZvcm1hdCIsIm9wdGlvbnMiLCJvcmlnaW4iLCJzZW50ZW5jZVNwbGl0dGVyIiwiY29udGV4dFJlc3VsdHMiLCJsYW5ndWFnZURldGVjdGlvbiIsImFwaUhvc3QiLCJmZXRjaCIsInJlc3BvbnNlVHlwZSIsIm1ldGhvZCIsImhlYWRlcnMiLCJPYmplY3QiLCJhc3NpZ24iLCJib2R5IiwiSlNPTiIsInN0cmluZ2lmeSIsInRoZW4iLCJyc3AiLCJyZXNwb25zZSIsInoiLCJvYmplY3QiLCJ0cmFuc2xhdGlvbiIsInN0cmluZyIsImFycmF5IiwicGFyc2UiLCJlcnJvciIsImpvaW4iLCJ0cmFuc2xhdGVCYXRjaCIsIlByb21pc2UiLCJhbGwiLCJtYXAiLCJ0cmFuc2xhdG9yTmFtZSJdLCJzb3VyY2VzIjpbInRyYW5zbGF0b3JzL3Vuc3RhYmxlL1JldmVyc29UcmFuc2xhdG9yLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB6IGZyb20gJ3pvZCc7XG5cbmltcG9ydCB7IEJhc2VUcmFuc2xhdG9yIH0gZnJvbSAnLi4vQmFzZVRyYW5zbGF0b3InO1xuXG4vKipcbiAqIFRoaXMgbW9kdWxlIGRpZCBub3QgdGVzdCB0b28gYWdvXG4gKi9cbmV4cG9ydCBjbGFzcyBSZXZlcnNvVHJhbnNsYXRvciBleHRlbmRzIEJhc2VUcmFuc2xhdG9yIHtcblx0cHVibGljIHN0YXRpYyByZWFkb25seSB0cmFuc2xhdG9yTmFtZSA9ICdSZXZlcnNvVHJhbnNsYXRvciAocHVibGljKSc7XG5cblx0cHVibGljIHN0YXRpYyBpc1N1cHBvcnRlZEF1dG9Gcm9tKCkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdHB1YmxpYyBzdGF0aWMgZ2V0U3VwcG9ydGVkTGFuZ3VhZ2VzKCk6IHN0cmluZ1tdIHtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZVxuXHRcdC8vIHByZXR0aWVyLWlnbm9yZVxuXHRcdHJldHVybiBbXG5cdFx0XHQnZW4nLCAnYXInLCAnbmwnLCAnaGUnLCAnZXMnLCAnaXQnLCAnemgnLCAnZGUnLCAncGwnLCAncHQnLFxuXHRcdFx0J3JvJywgJ3J1JywgJ3RyJywgJ2ZyJywgJ2phJyxcblx0XHRdO1xuXHRcdC8vIGVzbGludC1lbmFibGVcblx0fVxuXG5cdHB1YmxpYyBnZXRMZW5ndGhMaW1pdCgpIHtcblx0XHRyZXR1cm4gNTAwMDtcblx0fVxuXG5cdHB1YmxpYyBnZXRSZXF1ZXN0c1RpbWVvdXQoKSB7XG5cdFx0cmV0dXJuIDEwMDA7XG5cdH1cblxuXHRwdWJsaWMgY2hlY2tMaW1pdEV4Y2VlZGluZyh0ZXh0OiBzdHJpbmcgfCBzdHJpbmdbXSkge1xuXHRcdGlmIChBcnJheS5pc0FycmF5KHRleHQpKSB7XG5cdFx0XHRjb25zdCBhcnJheUxlbiA9IHRleHQucmVkdWNlKChhY2MsIHRleHQpID0+IGFjYyArIHRleHQubGVuZ3RoLCAwKTtcblx0XHRcdGNvbnN0IGV4dHJhID0gYXJyYXlMZW4gLSB0aGlzLmdldExlbmd0aExpbWl0KCk7XG5cdFx0XHRyZXR1cm4gZXh0cmEgPiAwID8gZXh0cmEgOiAwO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCBleHRyYSA9IHRleHQubGVuZ3RoIC0gdGhpcy5nZXRMZW5ndGhMaW1pdCgpO1xuXHRcdFx0cmV0dXJuIGV4dHJhID4gMCA/IGV4dHJhIDogMDtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHJlYWRvbmx5IGxhbmdNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG5cdFx0ZW46ICdlbmcnLFxuXHRcdGFyOiAnYXJhJyxcblx0XHRubDogJ2R1dCcsXG5cdFx0aGU6ICdoZWInLFxuXHRcdGVzOiAnc3BhJyxcblx0XHRpdDogJ2l0YScsXG5cdFx0emg6ICdjaGknLFxuXHRcdGRlOiAnZ2VyJyxcblx0XHRwbDogJ3BvbCcsXG5cdFx0cHQ6ICdwb3InLFxuXHRcdHJvOiAncnVtJyxcblx0XHRydTogJ3J1cycsXG5cdFx0dHI6ICd0dXInLFxuXHRcdGZyOiAnZnJhJyxcblx0XHRqYTogJ2pwbicsXG5cdH07XG5cblx0cHVibGljIHRyYW5zbGF0ZSh0ZXh0OiBzdHJpbmcsIGZyb206IHN0cmluZywgdG86IHN0cmluZykge1xuXHRcdGNvbnN0IGxvY2FsRnJvbSA9IHRoaXMubGFuZ01hcFtmcm9tXTtcblx0XHRjb25zdCBsb2NhbFRvID0gdGhpcy5sYW5nTWFwW3RvXTtcblxuXHRcdGNvbnN0IGRhdGEgPSB7XG5cdFx0XHRpbnB1dDogdGV4dCxcblx0XHRcdGZyb206IGxvY2FsRnJvbSxcblx0XHRcdHRvOiBsb2NhbFRvLFxuXHRcdFx0Zm9ybWF0OiAndGV4dCcsXG5cdFx0XHRvcHRpb25zOiB7XG5cdFx0XHRcdG9yaWdpbjogJ3RyYW5zbGF0aW9uLndlYicsXG5cdFx0XHRcdHNlbnRlbmNlU3BsaXR0ZXI6IHRydWUsXG5cdFx0XHRcdGNvbnRleHRSZXN1bHRzOiB0cnVlLFxuXHRcdFx0XHRsYW5ndWFnZURldGVjdGlvbjogZmFsc2UsXG5cdFx0XHR9LFxuXHRcdH07XG5cblx0XHRjb25zdCBhcGlIb3N0ID0gJ2h0dHBzOi8vYXBpLnJldmVyc28ubmV0L3RyYW5zbGF0ZS92MS90cmFuc2xhdGlvbic7XG5cdFx0cmV0dXJuIHRoaXMuZmV0Y2goYXBpSG9zdCwge1xuXHRcdFx0cmVzcG9uc2VUeXBlOiAnanNvbicsXG5cdFx0XHRtZXRob2Q6ICdQT1NUJyxcblx0XHRcdGhlYWRlcnM6IHtcblx0XHRcdFx0J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04Jyxcblx0XHRcdFx0Li4udGhpcy5vcHRpb25zLmhlYWRlcnMsXG5cdFx0XHR9LFxuXHRcdFx0Ym9keTogSlNPTi5zdHJpbmdpZnkoZGF0YSksXG5cdFx0fSkudGhlbigocnNwKSA9PiB7XG5cdFx0XHRjb25zdCByZXNwb25zZSA9IHpcblx0XHRcdFx0Lm9iamVjdCh7XG5cdFx0XHRcdFx0dHJhbnNsYXRpb246IHouc3RyaW5nKCkuYXJyYXkoKSxcblx0XHRcdFx0fSlcblx0XHRcdFx0LnBhcnNlKHJzcC5kYXRhLCB7IGVycm9yOiAoKSA9PiAnVW5leHBlY3RlZCByZXNwb25zZSBmb3JtYXQnIH0pO1xuXG5cdFx0XHRyZXR1cm4gcmVzcG9uc2UudHJhbnNsYXRpb24uam9pbignJyk7XG5cdFx0fSk7XG5cdH1cblxuXHRwdWJsaWMgdHJhbnNsYXRlQmF0Y2godGV4dDogc3RyaW5nW10sIGZyb206IHN0cmluZywgdG86IHN0cmluZykge1xuXHRcdHJldHVybiBQcm9taXNlLmFsbCh0ZXh0Lm1hcCgodGV4dCkgPT4gdGhpcy50cmFuc2xhdGUodGV4dCwgZnJvbSwgdG8pKSk7XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsSUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsZUFBQSxHQUFBRCxPQUFBO0FBQW1ELFNBQUFELHVCQUFBRyxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxD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
;