Spaces:
Running
Running
File size: 1,990 Bytes
038b679 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
const generateFinalToken = require("../utils/token_gen");
function constructTranslationUrl({
translateFrom,
translateTo,
generatedToken,
}) {
const baseUrl = "https://translate.googleapis.com/translate_a/t";
const queryParams = new URLSearchParams({
client: "te",
v: "1.0",
sl: translateFrom,
tl: translateTo,
tk: generatedToken,
});
return `${baseUrl}?${queryParams.toString()}`;
}
function getHeaders() {
const headers = new Headers();
headers.append("accept", "*/*");
headers.append("Content-Type", "application/x-www-form-urlencoded");
return headers;
}
function getEncodedBody({ phrases }) {
const urlencodedBody = new URLSearchParams();
phrases.forEach((phrase) => urlencodedBody.append("q", phrase));
return urlencodedBody;
}
async function translateText({
listOfWordsToTranslate,
translateFrom = "en",
translateTo = "en",
}) {
var _result = listOfWordsToTranslate.map((originalPhrase, index) => ({
original: originalPhrase,
translation: originalPhrase,
}));
if (translateFrom === translateTo) {
return _result;
}
var generatedToken = generateFinalToken(listOfWordsToTranslate);
const url = constructTranslationUrl({
generatedToken: generatedToken,
translateFrom: translateFrom,
translateTo: translateTo,
});
const headers = getHeaders();
const urlencodedBody = getEncodedBody({
phrases: listOfWordsToTranslate,
});
// Create requestOptions
const requestOptions = {
method: "POST",
headers: headers,
body: urlencodedBody,
redirect: "follow",
};
try {
const response = await fetch(url, requestOptions);
var result = await response.json();
_result = listOfWordsToTranslate.map((originalPhrase, index) => ({
original: originalPhrase,
translation: result[index].length == 0 ? originalPhrase : result[index],
}));
} catch (error) {
console.error("Error:", error);
}
return _result;
}
module.exports = translateText;
|