mololab / json-translator

jsontt 💡 - FREE simple CLI to translate your json files into other languages ✅ Check Readme ✌

Home Page:https://mololab.org/jsontt/npm

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

What is wrong?

Aido21 opened this issue · comments

Translating. Please wait.(node:78632) UnhandledPromiseRejectionWarning: RequestError: read ETIMEDOUT
at ClientRequest. (/Users/Eugene/node_modules/got/source/request-as-event-emitter.js:178:14)
at Object.onceWrapper (events.js:520:26)
at ClientRequest.emit (events.js:412:35)
at ClientRequest.origin.emit (/Users/Eugene/node_modules/@szmarczak/http-timer/source/index.js:37:11)
at TLSSocket.socketErrorListener (_http_client.js:475:9)
at TLSSocket.emit (events.js:400:28)
at emitErrorNT (internal/streams/destroy.js:106:8)
at emitErrorCloseNT (internal/streams/destroy.js:74:3)
at processTicksAndRejections (internal/process/task_queues.js:82:21)
(Use node --trace-warnings ... to show where the warning was created)
(node:78632) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag --unhandled-rejections=strict (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:78632) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Thanks for your report. Can you please provide more information about your flow?
1 - The size of your JSON object (number of fields approximately)
2 - Which languages are you translating your JSON object to? (number of languages)
3 - Are you using CLI or functions?

Thank you.
Can you please try the v0.7.0 version? (will be available after 10 hours) I will also mention here when the new release comes.

v0.7.0 is available now. Can you please try the same flow?

Actually, it is normal for that big file. I translated 700 lines JSON file before, and it took 10 minutes. If there is no error, it will respond.

This package works in async format to make operations fast. That means if there are 5 fields in the object it tries to translate them at the same time. And when sending more than 1000+ requests at the same time to the Google Translate API, response times get longer (Google Translate API makes this latency.). At that time problem occurs on big files. Unfortunately, I can't solve it right now (I don't have much time nowadays) but there can be a way to solve it manually. You can do like this:

Please divide your JSON file into 3 or more pieces, translate them separately and merge it. For example:
You have 1000 lines JSON file (a.json):
Create valid JSON files:

a1.json (from a.json, take 0 to 250 lines)
a2.json (from a.json, take 251 to 500 lines)
a3.json (from a.json, take 501 to 750 lines)
a4.json (from a.json, take 751 to 1000 lines)

And translate them separately. (Don't forget to change the name of the file which will be created each time. Because the new English file name will always be en.json).

Sorry for the problem. I am adding this problem to the roadmap to solve it when I am available.

Great idea. Thank you for the feedback :)

Hi @Aido21 , json-translater now will show the number of lines that are translated already with the 0.8.0 version. Now, it is available to use.

Thank you for your great feedback.

The number of lines can be limited by Google Translate API (because of concurrent requests from the same IP address). I will try to find a way to handle these errors. Thank you for the report.

For the current situation, you can try to split your file into 3 different files and translate them one by one and can combine them all until I fix this problem.

Fixed #2 with version 1.0.0

Solution is here