I have just started using the goslate library in Python to detect the language of the words in a text but after testing it for 7-8 inputs, I gave the input which had the words written in two languages, Arabic and English. After which, it started giving me the error.
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
execfile("C:/test_goslate.py");
File "C:/test_goslate.py", line 12, in <module>
language_id = gs.detect('الدولة')
File "C:\Python27\lib\site-packages\goslate.py", line 484, in detect
return self._detect_language(text)
File "C:\Python27\lib\site-packages\goslate.py", line 448, in _detect_language
return self._basic_translate(text[:50].encode('utf-8'), 'en', 'auto')[1]
File "C:\Python27\lib\site-packages\goslate.py", line 251, in _basic_translate
response_content = self._open_url(url)
File "C:\Python27\lib\site-packages\goslate.py", line 181, in _open_url
response = self._opener.open(request, timeout=self._TIMEOUT)
File "C:\Python27\lib\urllib2.py", line 410, in open
response = meth(req, response)
File "C:\Python27\lib\urllib2.py", line 523, in http_response
'http', request, response, code, msg, hdrs)
File "C:\Python27\lib\urllib2.py", line 448, in error
return self._call_chain(*args)
File "C:\Python27\lib\urllib2.py", line 382, in _call_chain
result = func(*args)
File "C:\Python27\lib\urllib2.py", line 531, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
HTTPError: HTTP Error 503: Service Unavailable
I wrote the code as :
# -*- coding: utf8 -*-
import urllib2
import goslate
gs = goslate.Goslate()
language_id = gs.detect('wait الدولة')
print (gs.get_languages()[language_id])
and now it is not working at all for any input which I tested previously and is giving me same error. I tried finding error resolve on google but nothing helped. This is what I found : Link 1 - StackOverflow
I tried updating it with the command as also suggested in the link above :
pip install -U goslate
but it did not help as it is already the newest updated version that I am using. Also I read in the library documentation that one gets this kind of error for translation when :
If you get HTTP 5xx error, it is probably because google has banned your client IP address from transation querying.
You could verify it by access google translation service in browser manually.
You could try the following to overcome this issue:
query through a HTTP/SOCK5 proxy, see Proxy Support
using another google domain for translation: gs = Goslate(service_urls=['http://translate.google.de'])
wait for 3 seconds before issue another querying
I tried using proxy connection but nothing helped.
EDIT Could the reason be that Google allows only some number of requests per day ? In that case what better can be done ? Is there any other Python based library which can help me resolve this?
Elaborating on @programmer44 answer, here is an example of the use of TextBlob for this particular case:
In the documentation update from 05 of January of 2016, the author says that they will not update Goslate to overpass Google API access control :
The official, Google-approved way to use Google Translate in your programs is with the paid Google Cloud Translation API. With anything else, you're going to be fighting Google's rate limiting and bot detection.
Since TextBlob does not seem to work for me anymore neither. I have use langdetect which works just fine.
As shown on their documentation:
will return
maybe looking for this: https://pypi.python.org/pypi/textblob it is better than goslate,
since textblob is blocked as of now, maybe py-translate could do the trick,
https://pypi.python.org/pypi/py-translate/#downloads
http://pythonhosted.org/py-translate/devs/api.html
"py-translate is a CLI Tool for Google Translate written in Python!"
the first argument to the translator function is the source language, the second is the target language, and the third is the phrase to be translated,
it returns a dictionary, which the documentation refers to as a request interface