Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
:Example:
>>> gs = Goslate()
>>> print(gs.translate('Hello World', 'de'))
Hallo Welt
>>>
>>> for i in gs.translate(['thank', u'you'], 'de'):
... print(i)
...
danke
Sie
'''
if not target_language:
raise Error('invalid target language')
if not _is_sequence(text):
if isinstance(text, unicode):
text = text.encode('utf-8')
return self._translate_single_text(text, target_language, source_language)
JOINT = u'\u26ff'
UTF8_JOINT = (u'\n%s\n' % JOINT).encode('utf-8')
def join_texts(texts):
def convert_to_utf8(texts):
for i in texts:
if isinstance(i, unicode):
i = i.encode('utf-8')
yield i.strip()
def split_text(text):
start = 0
text = quote_plus(text)
length = len(text)
while (length - start) > self._MAX_LENGTH_PER_QUERY:
for seperator in self._SEPERATORS:
index = text.rfind(seperator, start, start+self._MAX_LENGTH_PER_QUERY)
if index != -1:
break
else:
raise Error('input too large')
end = index + len(seperator)
yield unquote_plus(text[start:end])
start = end
yield unquote_plus(text[start:])
def _basic_translate(self, text, target_language, source_language=''):
# assert _is_bytes(text)
if not target_language:
raise Error('invalid target language')
if not text.strip():
return u'', unicode(target_language)
# Browser request for 'hello world' is:
# http://translate.google.com/translate_a/t?client=t&hl=en&sl=en&tl=zh-CN&ie=UTF-8&oe=UTF-8&multires=1&prev=conf&psl=en&ptl=en&otf=1&it=sel.2016&ssel=0&tsel=0&prev=enter&oc=3&ssel=0&tsel=0&sc=1&text=hello%20world
GOOGLE_TRASLATE_URL = 'http://translate.google.com/translate_a/t'
GOOGLE_TRASLATE_PARAMETERS = {
# 't' client will receiver non-standard json format
# change client to something other than 't' to get standard json response
'client': 'z',
'sl': source_language,
'tl': target_language,
'ie': 'UTF-8',
'oe': 'UTF-8',
def _open_url(self, url):
if len(url) > self._MAX_LENGTH_PER_QUERY+100:
raise Error('input too large')
# Google forbits urllib2 User-Agent: Python-urllib/2.7
request = Request(url, headers={'User-Agent':'Mozilla/4.0'})
exception = None
# retry when get (, error(54, 'Connection reset by peer')
for i in range(self._RETRY_TIMES):
try:
response = self._opener.open(request, timeout=self._TIMEOUT)
response_content = response.read().decode('utf-8')
if self._DEBUG:
print(response_content)
return response_content
except socket.error as e:
if self._DEBUG:
import threading