Spaces:
Sleeping
Sleeping
Download src/services/google_translate.py from easyreadtogether/easyreadDemo: direct link, hf CLI and curl.
- Browser
- Download file 2.4 kB
-
https://huggingface.co/spaces/easyreadtogether/easyreadDemo/resolve/main/src/services/google_translate.py
- Command line
-
hf download hf://spaces/easyreadtogether/easyreadDemo/src/services/google_translate.py
-
curl -L -o google_translate.py https://huggingface.co/spaces/easyreadtogether/easyreadDemo/resolve/main/src/services/google_translate.py
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 | |