Files
traduccion_bots/plan.md

2.6 KiB

Plan de Acción: Traducción Multilingüe (Discord y Telegram)

1. Problema Identificado

Actualmente, ambos bots envían el mensaje completo a LibreTranslate. Con la detección automática (source: auto), el motor elige un único idioma dominante. Esto causa que en mensajes mixtos (ej: "Hello! ¿Cómo estás?"), las partes que no coinciden con el idioma detectado no se traduzcan correctamente en ninguna de las dos plataformas.

2. Estrategia de Solución: Segmentación Unificada

La solución consiste en crear una lógica de traducción centralizada que divida el texto en unidades lógicas (oraciones) y las traduzca de forma independiente.

Fase A: Centralización en botdiscord/translate.py

  1. Nueva Función Core: Crear translate_multilingual_text(text, target_lang) en el módulo compartido.
  2. Uso en Telegram: Migrar bottelegram/telegram_bot.py para que use esta función centralizada en lugar de su propia translate_text_telegram.
  3. Soporte HTML: Activar el modo HTML para Telegram también, permitiendo proteger menciones de usuario (@username) de forma similar a como se hizo en Discord.

Fase B: Segmentación y Paralelismo

  1. División: Usar expresiones regulares (re.split) para fragmentar por ., !, ? y saltos de línea \n.
  2. Peticiones Concurrentes: Utilizar asyncio.gather para traducir todos los fragmentos simultáneamente. Esto evita que el bot se vuelva lento a pesar de hacer más peticiones a la API.
  3. Detección Localizada: Al procesar frases cortas, LibreTranslate podrá detectar correctamente el idioma de cada fragmento individual.

Fase C: Reconstrucción y Formatos Especiales

  1. Discord: Mantener la protección de etiquetas <mX /> para menciones de roles y canales.
  2. Telegram: Asegurar que la lógica funcione tanto para mensajes de texto simples como para pies de foto (captions) en imágenes, videos y documentos.
  3. Ensamblado: Unir las piezas respetando la puntuación y el espaciado original.

3. Ventajas e Inconvenientes

  • Ventaja: Traducción coherente y completa para usuarios que mezclan idiomas. Sincronización de comportamiento entre Discord y Telegram.
  • Inconveniente: Mayor carga de red hacia la instancia de LibreTranslate. Se recomienda monitorizar el rendimiento del servidor de traducción.

4. Próximos Pasos (Implementación)

  1. Refactorizar botdiscord/translate.py: Implementar la lógica de segmentación por oraciones.
  2. Actualizar Bot Telegram: Reemplazar translate_text_telegram por la nueva función centralizada.
  3. Actualizar Bot Discord: Modificar el callback en ui.py para usar la nueva segmentación.