JimmyK300's picture
Upload 15 files
038b679 verified
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;