Search code examples
pythonpython-3.xjsondecodergoogle-translation-api

Python google-trans-new translate raises error: JSONDecodeError: Extra data:


While working on Google translate API, I found out some times google can't translate anything, while it keeps raising the same exception: Extra data.

I have searched on the internet, I found a theory saying I have been blocked by Google translate somehow, or can be blocked because translation data exceeds the 5k character limit. here is a solution but I don't think it is the proper way to solve it.

My code is not new, it has been around 1 month working properly, but a few days ago, it started raising the error, I that time I don't know how to solve it so I leave it overnight to solve it later, but when I woke up, it is working again, I thought it was an error caused by google or something so I just forget it, but at the same day, around 10 pm, It stops working. I want to say is it's very inconsistent, sometimes it works some times doesn't.

How to reproduce: run the example code from google_trans_new package website with specified python version.

here is my code:

from google_trans_new import google_translator

translator = google_translator()  
translate_text = translator.translate('สวัสดีจีน',lang_tgt='en') 
print(translate_text)

output:

Traceback (most recent call last):
  File "c:/Users/my_name/MyApp.py", line 105, in <module>
    translate_text = translator.translate('สวัสดีจีน',lang_tgt='en')
  File "C:\Users\my_name\AppData\Local\Programs\Python\Python37\lib\site-packages\google_trans_new\google_trans_new.py", line 188, in translate
    raise e
  File "C:\Users\my_name\AppData\Local\Programs\Python\Python37\lib\site-packages\google_trans_new\google_trans_new.py", line 152, in translate
    response = json.loads(response)
  File "C:\Users\my_name\AppData\Local\Programs\Python\Python37\lib\json\__init__.py", line 348, in loads
    return _default_decoder.decode(s)
  File "C:\Users\my_name\AppData\Local\Programs\Python\Python37\lib\json\decoder.py", line 341, in decode
    raise JSONDecodeError("Extra data", s, end)
json.decoder.JSONDecodeError: Extra data: line 1 column 371 (char 370)

I have tested on my computer, my Heroku web app(for discord bot and line bot), and my friend's laptop. They all raising the same error.

my environments:

Python version: 3.7.0 (google-trans-new specified >= 3.6)
Heroku Python version: 3.8.10

Solution

  • There is already an open git issue for this. The workaround for it is:

    Change line 151 in google_trans_new/google_trans_new.py which is: response = (decoded_line + ']') to response = decoded_line

    You just need to clone the google_trans_new repository and edit line 151 on google_trans_new.py as mentioned above.

    Test done using the edited code and your input (สวัสดีจีน): enter image description here