""" 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