12

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
Xia
  • 309
  • 1
  • 3
  • 9

1 Answers1

20

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

Ricco D
  • 6,873
  • 1
  • 8
  • 18
  • OK, thanks for the workaround here. That git issue was only 3 days old though, and I can't perform the workaround for my Heroku app, just because I can't edit the source code. – Xia Jul 02 '21 at 06:01
  • @Xia I see. There is already a [pending commit](https://github.com/lushan88a/google_trans_new/pull/37/commits/e543e86465b43cd54669e4adb48ffa7adddba0f8) and hope that the owner accepts it! – Ricco D Jul 02 '21 at 06:16
  • This only partially works around the issue. If you need to use the "detect" method, you need to apply this fix again around line 236 (I changed the code a bit so exact line number may be in a small offset) – shayst Jul 03 '21 at 20:35
  • If it doesn't work, maybe you should to uninstall google_trans_new after you had installed it. `pip uninstall google_trans_new` Then, if it doesn't work because of an access to the module, move it at the root directory if it doesn't work use `import google_trans_new as gtn` and `translator = gtn.google_translator()` instead of `google_translator()` – Nicoolasens Jan 22 '22 at 22:11