anylang
Version:
A translator's kit that uses the free APIs of Google Translate, Yandex, Bing, ChatGPT, and other LLMs
65 lines (63 loc) • 7.36 kB
JavaScript
var __awaiter = (this && this.__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());
});
};
import z from 'zod';
import { BaseTranslator } from '../BaseTranslator';
export class TartuNLPTranslator extends BaseTranslator {
static isSupportedAutoFrom() {
return false;
}
static getSupportedLanguages() {
// eslint-disable
// prettier-ignore
return [
"en", "et", "de", "lt", "lv",
"fi", "ru", "no", "hu", "se",
];
// eslint-enable
}
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* () {
return this.translateBatch([text], from, to).then((resp) => resp[0]);
});
}
translateBatch(text, from, to) {
return __awaiter(this, void 0, void 0, function* () {
return this.fetch('https://api.tartunlp.ai/translation/v2', {
responseType: 'json',
method: 'POST',
headers: Object.assign({ 'Content-Type': 'application/json' }, this.options.headers),
body: JSON.stringify({ text, src: from, tgt: to }),
}).then((rsp) => {
return z
.object({ result: z.string().array() })
.parse(rsp.data, { error: () => 'Unexpected data' }).result;
});
});
}
}
TartuNLPTranslator.translatorName = 'TartuNLPTranslator';
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRyYW5zbGF0b3JzL1RhcnR1TkxQVHJhbnNsYXRvci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUM7QUFFcEIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRW5ELE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxjQUFjO0lBRzlDLE1BQU0sQ0FBQyxtQkFBbUI7UUFDaEMsT0FBTyxLQUFLLENBQUM7SUFDZCxDQUFDO0lBRU0sTUFBTSxDQUFDLHFCQUFxQjtRQUNsQyxpQkFBaUI7UUFDakIsa0JBQWtCO1FBQ2xCLE9BQU87WUFDTixJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtZQUM1QixJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtTQUM1QixDQUFDO1FBQ0YsZ0JBQWdCO0lBQ2pCLENBQUM7SUFFTSxjQUFjO1FBQ3BCLE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztJQUVNLGtCQUFrQjtRQUN4QixPQUFPLEdBQUcsQ0FBQztJQUNaLENBQUM7SUFFTSxtQkFBbUIsQ0FBQyxJQUF1QjtRQUNqRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN6QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbEUsTUFBTSxLQUFLLEdBQUcsUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUMvQyxPQUFPLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlCLENBQUM7YUFBTSxDQUFDO1lBQ1AsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDbEQsT0FBTyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QixDQUFDO0lBQ0YsQ0FBQztJQUVZLFNBQVMsQ0FBQyxJQUFZLEVBQUUsSUFBWSxFQUFFLEVBQVU7O1lBQzVELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLENBQUM7S0FBQTtJQUVZLGNBQWMsQ0FBQyxJQUFjLEVBQUUsSUFBWSxFQUFFLEVBQVU7O1lBQ25FLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyx3Q0FBd0MsRUFBRTtnQkFDM0QsWUFBWSxFQUFFLE1BQU07Z0JBQ3BCLE1BQU0sRUFBRSxNQUFNO2dCQUNkLE9BQU8sa0JBQ04sY0FBYyxFQUFFLGtCQUFrQixJQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FDdkI7Z0JBQ0QsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUM7YUFDbEQsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNmLE9BQU8sQ0FBQztxQkFDTixNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7cUJBQ3RDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFDOUQsQ0FBQyxDQUFDLENBQUM7UUFDSixDQUFDO0tBQUE7O0FBckRzQixpQ0FBYyxHQUFHLG9CQUFvQixDQUFDIiwiZmlsZSI6InRyYW5zbGF0b3JzL1RhcnR1TkxQVHJhbnNsYXRvci9pbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB6IGZyb20gJ3pvZCc7XG5cbmltcG9ydCB7IEJhc2VUcmFuc2xhdG9yIH0gZnJvbSAnLi4vQmFzZVRyYW5zbGF0b3InO1xuXG5leHBvcnQgY2xhc3MgVGFydHVOTFBUcmFuc2xhdG9yIGV4dGVuZHMgQmFzZVRyYW5zbGF0b3Ige1xuXHRwdWJsaWMgc3RhdGljIHJlYWRvbmx5IHRyYW5zbGF0b3JOYW1lID0gJ1RhcnR1TkxQVHJhbnNsYXRvcic7XG5cblx0cHVibGljIHN0YXRpYyBpc1N1cHBvcnRlZEF1dG9Gcm9tKCkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdHB1YmxpYyBzdGF0aWMgZ2V0U3VwcG9ydGVkTGFuZ3VhZ2VzKCk6IHN0cmluZ1tdIHtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZVxuXHRcdC8vIHByZXR0aWVyLWlnbm9yZVxuXHRcdHJldHVybiBbXG5cdFx0XHRcImVuXCIsIFwiZXRcIiwgXCJkZVwiLCBcImx0XCIsIFwibHZcIixcblx0XHRcdFwiZmlcIiwgXCJydVwiLCBcIm5vXCIsIFwiaHVcIiwgXCJzZVwiLFxuXHRcdF07XG5cdFx0Ly8gZXNsaW50LWVuYWJsZVxuXHR9XG5cblx0cHVibGljIGdldExlbmd0aExpbWl0KCkge1xuXHRcdHJldHVybiA1MDAwO1xuXHR9XG5cblx0cHVibGljIGdldFJlcXVlc3RzVGltZW91dCgpIHtcblx0XHRyZXR1cm4gMzAwO1xuXHR9XG5cblx0cHVibGljIGNoZWNrTGltaXRFeGNlZWRpbmcodGV4dDogc3RyaW5nIHwgc3RyaW5nW10pIHtcblx0XHRpZiAoQXJyYXkuaXNBcnJheSh0ZXh0KSkge1xuXHRcdFx0Y29uc3QgYXJyYXlMZW4gPSB0ZXh0LnJlZHVjZSgoYWNjLCB0ZXh0KSA9PiBhY2MgKyB0ZXh0Lmxlbmd0aCwgMCk7XG5cdFx0XHRjb25zdCBleHRyYSA9IGFycmF5TGVuIC0gdGhpcy5nZXRMZW5ndGhMaW1pdCgpO1xuXHRcdFx0cmV0dXJuIGV4dHJhID4gMCA/IGV4dHJhIDogMDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgZXh0cmEgPSB0ZXh0Lmxlbmd0aCAtIHRoaXMuZ2V0TGVuZ3RoTGltaXQoKTtcblx0XHRcdHJldHVybiBleHRyYSA+IDAgPyBleHRyYSA6IDA7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIGFzeW5jIHRyYW5zbGF0ZSh0ZXh0OiBzdHJpbmcsIGZyb206IHN0cmluZywgdG86IHN0cmluZykge1xuXHRcdHJldHVybiB0aGlzLnRyYW5zbGF0ZUJhdGNoKFt0ZXh0XSwgZnJvbSwgdG8pLnRoZW4oKHJlc3ApID0+IHJlc3BbMF0pO1xuXHR9XG5cblx0cHVibGljIGFzeW5jIHRyYW5zbGF0ZUJhdGNoKHRleHQ6IHN0cmluZ1tdLCBmcm9tOiBzdHJpbmcsIHRvOiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gdGhpcy5mZXRjaCgnaHR0cHM6Ly9hcGkudGFydHVubHAuYWkvdHJhbnNsYXRpb24vdjInLCB7XG5cdFx0XHRyZXNwb25zZVR5cGU6ICdqc29uJyxcblx0XHRcdG1ldGhvZDogJ1BPU1QnLFxuXHRcdFx0aGVhZGVyczoge1xuXHRcdFx0XHQnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuXHRcdFx0XHQuLi50aGlzLm9wdGlvbnMuaGVhZGVycyxcblx0XHRcdH0sXG5cdFx0XHRib2R5OiBKU09OLnN0cmluZ2lmeSh7IHRleHQsIHNyYzogZnJvbSwgdGd0OiB0byB9KSxcblx0XHR9KS50aGVuKChyc3ApID0+IHtcblx0XHRcdHJldHVybiB6XG5cdFx0XHRcdC5vYmplY3QoeyByZXN1bHQ6IHouc3RyaW5nKCkuYXJyYXkoKSB9KVxuXHRcdFx0XHQucGFyc2UocnNwLmRhdGEsIHsgZXJyb3I6ICgpID0+ICdVbmV4cGVjdGVkIGRhdGEnIH0pLnJlc3VsdDtcblx0XHR9KTtcblx0fVxufVxuIl19