@awesome-fe/translate
Version:
Translation utils
37 lines • 1.56 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.GoogleTranslationEngine = void 0;
const translation_engine_1 = require("./translation-engine");
const sentence_formatter_1 = require("./sentence-formatter");
const request_1 = require("request");
function fetch(url, data) {
return new Promise((resolve, reject) => {
(0, request_1.post)(url, { form: data }, (error, response, body) => {
if (error) {
reject(error);
}
else {
resolve(JSON.parse(body));
}
});
});
}
class GoogleTranslationEngine extends translation_engine_1.TranslationEngine {
async batchTranslate(pairs, format) {
for (let pair of pairs) {
const text = sentence_formatter_1.SentenceFormatter.toHtml(pair[0], format);
if (!text.trim()) {
continue;
}
const response = await fetch(`https://translate.googleapis.com/translate_a/t?anno=3&client=gtx&format=html&v=1.0&sl=auto&tl=zh-CN&tc=6&sr=1&mode=1`, {
q: text,
});
const multiSentencesPattern = /<i>(.*?)<\/i>\s*<b>(.*?)<\/b>/g;
const translation = (response?.[0]?.[0] ?? '').replace(/^<p>([\s\S]*)<\/p>$/, '$1');
pair[1] = sentence_formatter_1.SentenceFormatter.fromHtml(translation.replace(multiSentencesPattern, '$2'), format);
}
return pairs;
}
}
exports.GoogleTranslationEngine = GoogleTranslationEngine;
//# sourceMappingURL=google-engine.js.map