Contexto
Para un traductor de conferencias en tiempo real necesitaba traducir texto de ingles a espanol. Google Cloud Translation y DeepL cobran por caracter. Para un uso personal donde traduzco horas de conferencias, el costo se acumula rapido.
Lo que aprendi
deep-translator usa Google Translate por detras sin necesitar API key ni cuenta de Google Cloud:
from deep_translator import GoogleTranslator
translator = GoogleTranslator(source="en", target="es")
texto = translator.translate("The circuit breaker pattern prevents cascading failures")
# "El patron de circuit breaker previene fallas en cascada"
Para integrarlo en un pipeline threaded, la inicializacion se hace lazy dentro del thread (no en __init__):
class Translator:
def __init__(self, text_queue, output_queues):
self.text_queue = text_queue
self.output_queues = output_queues
self._translator = None
def run(self):
# Inicializar en el thread, no en el constructor
self._translator = GoogleTranslator(source="en", target="es")
while not self._stop_event.is_set():
try:
item = self.text_queue.get(timeout=1.0)
except queue.Empty:
continue
try:
translated = self._translator.translate(item["text"])
except Exception:
translated = f"[translation error] {item['text']}"
result = {"english": item["text"], "spanish": translated}
for q in self.output_queues:
try:
q.put(result, timeout=1.0)
except queue.Full:
pass # backpressure: drop si la queue esta llena
El manejo de errores con fallback es importante: si Google Translate falla (red, rate limit temporal), mostrar el texto original con un prefijo en vez de perder el segmento.
Por que importa
pip install deep-translator y tienes traduccion funcional sin API key, sin cuenta, sin costo. Para uso personal y prototipos es perfecto. La calidad es Google Translate, que para conferencias tecnicas es mas que suficiente.