UNPKG

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
"use strict"; 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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