anylang
Version:
A translator's kit that uses the free APIs of Google Translate, Yandex, Bing, ChatGPT, and other LLMs
101 lines (99 loc) • 11.3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.LingvaTranslate = void 0;
var _zod = _interopRequireDefault(require("zod"));
var _BaseTranslator = require("../../BaseTranslator");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) {
function adopt(value) {
return value instanceof P ? value : new P(function (resolve) {
resolve(value);
});
}
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
}
function rejected(value) {
try {
step(generator["throw"](value));
} catch (e) {
reject(e);
}
}
function step(result) {
result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
}
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
// FIXME: translator fails the test `Translate many texts with "translateBatch"` - fix it or remove this translator
class LingvaTranslate extends _BaseTranslator.BaseTranslator {
static getSupportedLanguages() {
// eslint-disable
// prettier-ignore
return ["en", "ar", "az", "zh", "cs", "nl", "eo", "fi", "fr", "de", "el", "hi", "hu", "id", "ga", "it", "ja", "ko", "fa", "pl", "pt", "ru", "sk", "es", "sv", "tr", "uk", "vi"];
// eslint-enable
}
constructor(options) {
var _a;
super(options);
this.apiHost = (_a = options.apiHost) !== null && _a !== void 0 ? _a : 'https://translate.plausibility.cloud';
}
getLengthLimit() {
return 5000;
}
getRequestsTimeout() {
return 300;
}
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) {
return __awaiter(this, void 0, void 0, function* () {
const requestUrl = `${this.apiHost}/api/v1/${encodeURIComponent(from)}/${encodeURIComponent(to)}/${encodeURIComponent(text)}`;
return this.fetch(requestUrl, {
responseType: 'json',
method: 'GET',
headers: Object.assign({
'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0',
Accept: '*/*',
'Accept-Language': 'en-US,en;q=0.5',
'Sec-Fetch-Dest': 'empty',
'Sec-Fetch-Mode': 'cors',
'Sec-Fetch-Site': 'same-origin',
'Content-Type': 'application/x-www-form-urlencoded'
}, this.options.headers)
}).then(rsp => {
return _zod.default.object({
translation: _zod.default.string()
}).parse(rsp.data, {
error: () => 'Unexpected data'
}).translation;
});
});
}
translateBatch(texts, from, to) {
return __awaiter(this, void 0, void 0, function* () {
return Promise.all(texts.map(text => this.translate(text, from, to)));
});
}
}
exports.LingvaTranslate = LingvaTranslate;
LingvaTranslate.translatorName = 'LingvaTranslate';
LingvaTranslate.isRequiredKey = () => false;
LingvaTranslate.isSupportedAutoFrom = () => true;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRvcnMvdW5zdGFibGUvTGluZ3ZhVHJhbnNsYXRlL2luZGV4LmpzIiwibmFtZXMiOlsiX3pvZCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX0Jhc2VUcmFuc2xhdG9yIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiTGluZ3ZhVHJhbnNsYXRlIiwiQmFzZVRyYW5zbGF0b3IiLCJnZXRTdXBwb3J0ZWRMYW5ndWFnZXMiLCJjb25zdHJ1Y3RvciIsIm9wdGlvbnMiLCJhcGlIb3N0IiwiX2EiLCJnZXRMZW5ndGhMaW1pdCIsImdldFJlcXVlc3RzVGltZW91dCIsImNoZWNrTGltaXRFeGNlZWRpbmciLCJ0ZXh0IiwiQXJyYXkiLCJpc0FycmF5IiwiYXJyYXlMZW4iLCJyZWR1Y2UiLCJhY2MiLCJsZW5ndGgiLCJleHRyYSIsInRyYW5zbGF0ZSIsImZyb20iLCJ0byIsInJlcXVlc3RVcmwiLCJlbmNvZGVVUklDb21wb25lbnQiLCJmZXRjaCIsInJlc3BvbnNlVHlwZSIsIm1ldGhvZCIsImhlYWRlcnMiLCJPYmplY3QiLCJhc3NpZ24iLCJBY2NlcHQiLCJ0aGVuIiwicnNwIiwieiIsIm9iamVjdCIsInRyYW5zbGF0aW9uIiwic3RyaW5nIiwicGFyc2UiLCJkYXRhIiwiZXJyb3IiLCJ0cmFuc2xhdGVCYXRjaCIsInRleHRzIiwiUHJvbWlzZSIsImFsbCIsIm1hcCIsInRyYW5zbGF0b3JOYW1lIiwiaXNSZXF1aXJlZEtleSIsImlzU3VwcG9ydGVkQXV0b0Zyb20iXSwic291cmNlcyI6WyJ0cmFuc2xhdG9ycy91bnN0YWJsZS9MaW5ndmFUcmFuc2xhdGUvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHogZnJvbSAnem9kJztcblxuaW1wb3J0IHsgQmFzZVRyYW5zbGF0b3IsIFRyYW5zbGF0b3JPcHRpb25zIH0gZnJvbSAnLi4vLi4vQmFzZVRyYW5zbGF0b3InO1xuXG4vLyBGSVhNRTogdHJhbnNsYXRvciBmYWlscyB0aGUgdGVzdCBgVHJhbnNsYXRlIG1hbnkgdGV4dHMgd2l0aCBcInRyYW5zbGF0ZUJhdGNoXCJgIC0gZml4IGl0IG9yIHJlbW92ZSB0aGlzIHRyYW5zbGF0b3JcbmV4cG9ydCBjbGFzcyBMaW5ndmFUcmFuc2xhdGUgZXh0ZW5kcyBCYXNlVHJhbnNsYXRvciB7XG5cdHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgdHJhbnNsYXRvck5hbWUgPSAnTGluZ3ZhVHJhbnNsYXRlJztcblxuXHRwdWJsaWMgc3RhdGljIGlzUmVxdWlyZWRLZXkgPSAoKSA9PiBmYWxzZTtcblxuXHRwdWJsaWMgc3RhdGljIGlzU3VwcG9ydGVkQXV0b0Zyb20gPSAoKSA9PiB0cnVlO1xuXG5cdHB1YmxpYyBzdGF0aWMgZ2V0U3VwcG9ydGVkTGFuZ3VhZ2VzKCk6IHN0cmluZ1tdIHtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZVxuXHRcdC8vIHByZXR0aWVyLWlnbm9yZVxuXHRcdHJldHVybiBbXG5cdFx0XHRcImVuXCIsIFwiYXJcIiwgXCJhelwiLCBcInpoXCIsIFwiY3NcIixcblx0XHRcdFwibmxcIiwgXCJlb1wiLCBcImZpXCIsIFwiZnJcIiwgXCJkZVwiLFxuXHRcdFx0XCJlbFwiLCBcImhpXCIsIFwiaHVcIiwgXCJpZFwiLCBcImdhXCIsXG5cdFx0XHRcIml0XCIsIFwiamFcIiwgXCJrb1wiLCBcImZhXCIsIFwicGxcIixcblx0XHRcdFwicHRcIiwgXCJydVwiLCBcInNrXCIsIFwiZXNcIiwgXCJzdlwiLFxuXHRcdFx0XCJ0clwiLCBcInVrXCIsIFwidmlcIlxuXHRcdF07XG5cdFx0Ly8gZXNsaW50LWVuYWJsZVxuXHR9XG5cblx0Ly8gVVJMIG9mIHlvdXIgaW5zdGFuY2UsIGxvb2sgYXQgaHR0cHM6Ly9naXRodWIuY29tL3RoZWRhdmlkZGVsdGEvbGluZ3ZhLXRyYW5zbGF0ZSNpbnN0YW5jZXNcblx0Ly8gZm9yIGxvY2FsIGluc3RhbmNlIHVzZSBVUkwgXCJodHRwOi8vbG9jYWxob3N0OjMwMDBcIlxuXHRwcml2YXRlIHJlYWRvbmx5IGFwaUhvc3Q7XG5cblx0Y29uc3RydWN0b3Iob3B0aW9uczogVHJhbnNsYXRvck9wdGlvbnMpIHtcblx0XHRzdXBlcihvcHRpb25zKTtcblxuXHRcdHRoaXMuYXBpSG9zdCA9IG9wdGlvbnMuYXBpSG9zdCA/PyAnaHR0cHM6Ly90cmFuc2xhdGUucGxhdXNpYmlsaXR5LmNsb3VkJztcblx0fVxuXG5cdHB1YmxpYyBnZXRMZW5ndGhMaW1pdCgpIHtcblx0XHRyZXR1cm4gNTAwMDtcblx0fVxuXG5cdHB1YmxpYyBnZXRSZXF1ZXN0c1RpbWVvdXQoKSB7XG5cdFx0cmV0dXJuIDMwMDtcblx0fVxuXG5cdHB1YmxpYyBjaGVja0xpbWl0RXhjZWVkaW5nKHRleHQ6IHN0cmluZyB8IHN0cmluZ1tdKSB7XG5cdFx0aWYgKEFycmF5LmlzQXJyYXkodGV4dCkpIHtcblx0XHRcdGNvbnN0IGFycmF5TGVuID0gdGV4dC5yZWR1Y2UoKGFjYywgdGV4dCkgPT4gYWNjICsgdGV4dC5sZW5ndGgsIDApO1xuXHRcdFx0Y29uc3QgZXh0cmEgPSBhcnJheUxlbiAtIHRoaXMuZ2V0TGVuZ3RoTGltaXQoKTtcblx0XHRcdHJldHVybiBleHRyYSA+IDAgPyBleHRyYSA6IDA7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IGV4dHJhID0gdGV4dC5sZW5ndGggLSB0aGlzLmdldExlbmd0aExpbWl0KCk7XG5cdFx0XHRyZXR1cm4gZXh0cmEgPiAwID8gZXh0cmEgOiAwO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBhc3luYyB0cmFuc2xhdGUodGV4dDogc3RyaW5nLCBmcm9tOiBzdHJpbmcsIHRvOiBzdHJpbmcpIHtcblx0XHRjb25zdCByZXF1ZXN0VXJsID0gYCR7dGhpcy5hcGlIb3N0fS9hcGkvdjEvJHtlbmNvZGVVUklDb21wb25lbnQoXG5cdFx0XHRmcm9tLFxuXHRcdCl9LyR7ZW5jb2RlVVJJQ29tcG9uZW50KHRvKX0vJHtlbmNvZGVVUklDb21wb25lbnQodGV4dCl9YDtcblx0XHRyZXR1cm4gdGhpcy5mZXRjaChyZXF1ZXN0VXJsLCB7XG5cdFx0XHRyZXNwb25zZVR5cGU6ICdqc29uJyxcblx0XHRcdG1ldGhvZDogJ0dFVCcsXG5cdFx0XHRoZWFkZXJzOiB7XG5cdFx0XHRcdCdVc2VyLUFnZW50Jzpcblx0XHRcdFx0XHQnTW96aWxsYS81LjAgKFgxMTsgVWJ1bnR1OyBMaW51eCB4ODZfNjQ7IHJ2Ojk5LjApIEdlY2tvLzIwMTAwMTAxIEZpcmVmb3gvOTkuMCcsXG5cdFx0XHRcdEFjY2VwdDogJyovKicsXG5cdFx0XHRcdCdBY2NlcHQtTGFuZ3VhZ2UnOiAnZW4tVVMsZW47cT0wLjUnLFxuXHRcdFx0XHQnU2VjLUZldGNoLURlc3QnOiAnZW1wdHknLFxuXHRcdFx0XHQnU2VjLUZldGNoLU1vZGUnOiAnY29ycycsXG5cdFx0XHRcdCdTZWMtRmV0Y2gtU2l0ZSc6ICdzYW1lLW9yaWdpbicsXG5cdFx0XHRcdCdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyxcblx0XHRcdFx0Li4udGhpcy5vcHRpb25zLmhlYWRlcnMsXG5cdFx0XHR9LFxuXHRcdH0pLnRoZW4oKHJzcCkgPT4ge1xuXHRcdFx0cmV0dXJuIHpcblx0XHRcdFx0Lm9iamVjdCh7XG5cdFx0XHRcdFx0dHJhbnNsYXRpb246IHouc3RyaW5nKCksXG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5wYXJzZShyc3AuZGF0YSwgeyBlcnJvcjogKCkgPT4gJ1VuZXhwZWN0ZWQgZGF0YScgfSkudHJhbnNsYXRpb247XG5cdFx0fSk7XG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgdHJhbnNsYXRlQmF0Y2godGV4dHM6IHN0cmluZ1tdLCBmcm9tOiBzdHJpbmcsIHRvOiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gUHJvbWlzZS5hbGwodGV4dHMubWFwKCh0ZXh0KSA9PiB0aGlzLnRyYW5zbGF0ZSh0ZXh0LCBmcm9tLCB0bykpKTtcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxJQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7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