Spaces:
Sleeping
Sleeping
File size: 2,636 Bytes
b9b22c3 7050235 35019e5 76251ff 86760cc 7050235 26dc802 35019e5 76251ff 35019e5 7050235 35019e5 76251ff 35019e5 7050235 35019e5 76251ff 35019e5 7050235 76251ff 7050235 b9b22c3 7050235 b9b22c3 7050235 76251ff 35019e5 b9b22c3 35019e5 76251ff 35019e5 b9b22c3 35019e5 7050235 6502140 76251ff | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | from deep_translator import GoogleTranslator
from transformers import pipeline
import translators as ts
import random
import time
class MangaTranslator:
def __init__(self):
self.target = "pt"
self.source = "auto"
self.translators = {
"google": self._translate_with_google,
"hf": self._translate_with_hf,
"sogou": self._translate_with_sogou,
"bing": self._translate_with_bing
}
def translate(self, text, method="google"):
"""
Translates the given text to the target language using the specified method.
Args:
text (str): The text to be translated.
method (str):"google" for Google Translator,
"hf" for Helsinki-NLP's opus-mt-ja-en model (HF pipeline)
"sogou" for Sogou Translate
"bing" for Microsoft Bing Translator
Returns:
str: The translated text.
"""
translator_func = self.translators.get(method)
if translator_func:
return translator_func(self._preprocess_text(text))
else:
raise ValueError("Invalid translation method.")
def _translate_with_google(self, text):
self._delay()
translator = GoogleTranslator(source=self.source, target=self.target)
translated_text = translator.translate(text)
return translated_text if translated_text is not None else text
def _translate_with_hf(self, text):
pipe = pipeline("translation", model=f"Helsinki-NLP/opus-mt-ja-en")
translated_text = pipe(text)[0]["translation_text"]
return translated_text if translated_text is not None else text
def _translate_with_sogou(self, text):
self._delay()
translated_text = ts.translate_text(text, translator="sogou",
from_language=self.source,
to_language=self.target)
return translated_text if translated_text is not None else text
def _translate_with_bing(self, text):
self._delay()
translated_text = ts.translate_text(text, translator="bing",
from_language=self.source,
to_language=self.target)
return translated_text if translated_text is not None else text
def _preprocess_text(self, text):
preprocessed_text = text.replace(".", ".")
return preprocessed_text
def _delay(self):
time.sleep(random.randint(3, 5))
|