Spaces:
Running
Running
| 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; | |