Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
return
langs = parsed_args[0]
text = u" ".join(parsed_args[1:])
if u":" in langs:
split = langs.split(u":")
from_lang, to_lang = split[0], split[1]
else:
from_lang, to_lang = u"", langs
try:
translation = self.goslate.translate(text, to_lang, from_lang)
source.respond(u"[{}] {}".format(to_lang, translation))
except Error as e:
source.respond(u"Translation error: {}".format(e))
except Exception as e:
self.logger.exception("Translation error")
source.respond(u"Translation error: {}".format(e))
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 tuple(u'' for i in range(len(self._writing))) , 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
# TODO: we could randomly choose one of the google domain URLs for concurrent support
GOOGLE_TRASLATE_URL = urljoin(random.choice(self._service_urls), '/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',
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:])
gut
Morgen
To output romanlized translation
:Example:
>>> gs_roman = Goslate(WRITING_ROMAN)
>>> print(gs_roman.translate('Hello', 'zh'))
Nǐ hǎo
'''
if not target_language:
raise Error('invalid target language')
if target_language.lower() == 'zh':
target_language = 'zh-CN'
if source_language.lower() == 'zh':
source_language = 'zh-CN'
if not _is_sequence(text):
if isinstance(text, unicode):
text = text.encode('utf-8')
return _unwrapper_single_element(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 translate(self, text, target_language, source_language=''):
if not target_language:
raise Error('invalid target language')
if not text.strip():
return u'', unicode(target_language)
GOOGLE_TRASLATE_URL = 'http://translate.google.com/translate_a/t'
GOOGLE_TRASLATE_PARAMETERS = {
'client': 'z',
'sl': source_language,
'tl': target_language,
'ie': 'UTF-8',
'oe': 'UTF-8',
'text': text
}
url = '?'.join(
(GOOGLE_TRASLATE_URL, urlencode(GOOGLE_TRASLATE_PARAMETERS))
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