benjaminvr

Python - Translator using unofficial Googletrans library

Jul 28th, 2021 (edited)
226
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.95 KB | None | 0 0
  1. from googletrans import Translator as GoogleTranslator
  2. from conf import staticConfigs
  3. from time import sleep
  4. import backoff
  5.  
  6. class Translator:
  7.     def __init__(self):
  8.         self.conf = staticConfigs()
  9.         self.client = GoogleTranslator()
  10.         self.sleep_in_between_translations_seconds = self.conf.sleep_in_between_translations_seconds
  11.         self.source_language = "en"
  12.         self.max_chunk_size = 4000
  13.  
  14.     def __createChunks(self, corpus):
  15.         chunks = [corpus[i:i + self.max_chunk_size] for i in range(0, len(corpus), self.max_chunk_size)]
  16.         return chunks
  17.  
  18.     def __sleepBetweenQuery(self):
  19.         print('Sleeping for {}s after translation query..'.format(self.sleep_in_between_translations_seconds))
  20.         sleep(self.sleep_in_between_translations_seconds)
  21.  
  22.     @backoff.on_exception(backoff.expo, Exception, max_tries=150)
  23.     def Translate(self, content, dest_language_code):
  24.         try:
  25.             print('Attempting to translate to lang={}'.format(dest_language_code))
  26.             if len(content) > self.max_chunk_size:
  27.                 print('Warning: Content is longer than allowed size of {}, breaking into chunks'.format(self.max_chunk_size))
  28.                 results_list = []
  29.                 concatenated_result = ""
  30.  
  31.                 original_chunks = self.__createChunks(content)
  32.                 for i in original_chunks:
  33.                     r = self.client.translate(i, dest=dest_language_code, src=self.source_language)
  34.                     self.__sleepBetweenQuery()
  35.                     results_list.append(r.text)
  36.  
  37.                 for i in results_list:
  38.                     concatenated_result += i
  39.  
  40.                 return concatenated_result
  41.             else:
  42.                 res = self.client.translate(content, dest=dest_language_code, src=self.source_language)
  43.                 self.__sleepBetweenQuery()
  44.                 return res.text
  45.         except Exception as e:
  46.             print(e)
  47.             raise e
Add Comment
Please, Sign In to add comment