I wrote the following code to translate from Arabic to English, I want the function to accept English as source and return the translated text,
can some one help me on this?
translateArtoEn(source) {
let url = `https://translation.googleapis.com/language/translate/v2?key=${API_KEY}`;
url += '&q=' + encodeURI(source);
url += `&source=ar`;
url += `&target=en`;
console.log(url)
fetch(url, {
method: 'GET',
headers: {
"Content-Type": "application/json",
Accept: "application/json"
}
})
.then(res => res.json())
.then((response) => {
return response.data.translations[0]["translatedText"]
})
.catch(error => {
console.log("There was an error with the translation request: ", error);
});
}
The code you provided will not return any value since I assume the function is synchronous.
With this, you may use callback function to return the desired result after the parent function has already returned.
Please see below code for your reference:
const fetch = require('node-fetch');
function main(){
var source = '<your_desired_text_to_translate>';
translateArtoEn(source,myDisplayer);
}
function translateArtoEn(source,callback){
var API_KEY = '<your_API_key>';
let url = `https://translation.googleapis.com/language/translate/v2?key=${API_KEY}`;
url += '&q=' + encodeURI(source);
url += `&source=ar`;
url += `&target=en`;
fetch(url, {
method: 'GET',
headers: {
"Content-Type": "application/json",
Accept: "application/json"
}
})
.then(res => res.json())
.then((response) => {
callback(response.data.translations[0].translatedText)
})
.catch(error => {
console.log("There was an error with the translation request: ", error);
});
}
function myDisplayer(result) {
// handle the result here
console.log("Translated text: ",result);
}
if (require.main === module) {
main();
}
In this code, callback is used to pass the returned value (after the execution of the parent function is finished) to another function that will handle the result.