from deep_translator import GoogleTranslator from transformers import pipeline import translators as ts class MangaTranslator: def __init__(self): self.target = "en" self.source = "ja" self.translators = { "google": self._translate_with_google, "hf": self._translate_with_hf, "baidu": self._translate_with_baidu, "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) "baidu" for Baidu 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): 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_baidu(self, text): translated_text = ts.translate_text(text, translator="baidu", from_language="jp", to_language=self.target) return translated_text if translated_text is not None else text def _translate_with_bing(self, text): 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