I am implementing a translation app and the API is limited to 20 messages. Right now I have an array of infinite messages. I am using slice to create chunks of 20 messages and hit the api and then compiling the data.
async function callFun(mssgs) {
var index = 0;
const chunkSize = 20;
for (let i = 0; i < mssgs.length; i += chunkSize) {
const chunk = mssgs.slice(i, i + chunkSize);
await new Promise(function (resolve, reject) {
google.translateTextTest(
chunk,
current_user.language,
(data) => {
data = JSON.parse(data);
//console.log(data);
data.forEach(function (key) {
var original_index = mssgs[index].index;
console.log("original_index", original_index);
chats[original_index].message =
key.translations[0].text;
index++;
console.log("index", index);
if (index == mssgs.length) {
console.log(chats);
return;
}
});
resolve();
}
);
setTimeout(() => {
resolve();
}, 5000);
});
}
}
The sample response can be seen below
{
"translated_array": [
{
"detected_language": "en",
"object_id": 1,
"remarks": "",
"text": "نعم"
},
{
"detected_language": "en",
"object_id": 2,
"remarks": "",
"text": "نعم"
},
{
"detected_language": "en",
"object_id": 3,
"remarks": "",
"text": "نعم"
},
{
"detected_language": "en",
"object_id": 4,
"remarks": "",
"text": "نعم"
},
{
"detected_language": "en",
"object_id": 5,
"remarks": "",
"text": "مرحبًا"
},
{
"detected_language": "en",
"object_id": 6,
"remarks": "",
"text": "مكالمة صوتية"
},
{
"detected_language": "en",
"object_id": 7,
"remarks": "",
"text": "مكالمة صوتية"
},
{
"object_id": 8,
"remarks": "couldn't detect the text language",
"text": "f"
},
{
"detected_language": "en",
"object_id": 9,
"remarks": "",
"text": "جيج"
},
{
"detected_language": "da",
"object_id": 10,
"remarks": "da is not supported",
"text": "fdfd"
},
{
"detected_language": "en",
"object_id": 11,
"remarks": "",
"text": "من؟"
},
{
"detected_language": "en",
"object_id": 12,
"remarks": "",
"text": "ملاحظة اختبار"
},
{
"detected_language": "en",
"object_id": 13,
"remarks": "",
"text": "حصلت على جميع رسائلك س"
},
{
"detected_language": "en",
"object_id": 14,
"remarks": "",
"text": "مكالمة صوتية"
},
{
"detected_language": "ms",
"object_id": 15,
"remarks": "ms is not supported",
"text": "Yyu"
},
{
"detected_language": "en",
"object_id": 16,
"remarks": "",
"text": "حسنًا ، شكرًا"
},
{
"object_id": 17,
"remarks": "couldn't detect the text language",
"text": "C"
},
{
"object_id": 18,
"remarks": "couldn't detect the text language",
"text": "4"
},
{
"detected_language": "en",
"object_id": 19,
"remarks": "",
"text": "أهلاً"
},
{
"detected_language": "en",
"object_id": 20,
"remarks": "",
"text": "مرحبًا"
}
],
"response_code": 100,
"remarks": "Success",
"time": "2023-05-15 7:27:6",
"characterCountBalance": "Unlimited"
}
The issue is that I get response of only 20 messages. Some times, it returns the other data as well but mostly it is just returning me 20 messages and I am not able to get the rest of the data. Is that any other approach that I can take?