easyreadDemo / src /services /google_translate.py
system's picture
system HF Staff
Deploy 53c0813 from hugging_face
1c57e18 verified
Raw History Blame Contribute Delete
2.4 kB
"""
Translation via Google Translate, using the ``deep-translator`` library.
This is one of the translation backends selectable from the Controller. It
exposes ``translate(text, target_language)`` and ``translate_batch(...)``.
Target languages use ISO 639-1 codes (e.g. "sw" for Swahili, "fr" for French).
Requires:
pip install deep-translator
Usage:
from services.google_translate import GoogleTranslateDriver
translator = GoogleTranslateDriver()
translator.translate("Hello world", "sw")
"""
from typing import List
from logging import getLogger
logger = getLogger(__name__)
class GoogleTranslateDriver:
"""Translate text using Google Translate (via deep-translator)."""
def __init__(self, source: str = "auto"):
"""
Initialize the Google Translate driver.
Args:
source: Source language code, or "auto" to auto-detect.
"""
self.source = source
def translate(self, text: str, target_language: str) -> str:
"""
Translate a single string.
Args:
text: Text to translate.
target_language: ISO 639-1 target language code (e.g. "sw").
Returns:
The translated text. Returns the original text on failure.
"""
from deep_translator import GoogleTranslator
try:
return GoogleTranslator(source=self.source, target=target_language).translate(text)
except Exception:
logger.exception("Google translation failed; returning original text")
return text
def translate_batch(self, texts: List[str], target_language: str) -> List[str]:
"""
Translate a list of strings into the same target language.
Args:
texts: Strings to translate.
target_language: ISO 639-1 target language code.
Returns:
List of translated strings (positionally aligned with ``texts``).
"""
from deep_translator import GoogleTranslator
translator = GoogleTranslator(source=self.source, target=target_language)
results = []
for text in texts:
try:
results.append(translator.translate(text))
except Exception:
logger.exception("Google translation failed for an item; keeping original")
results.append(text)
return results