2.6 KiB
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
- Nueva Función Core: Crear
translate_multilingual_text(text, target_lang)en el módulo compartido. - Uso en Telegram: Migrar
bottelegram/telegram_bot.pypara que use esta función centralizada en lugar de su propiatranslate_text_telegram. - 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
- División: Usar expresiones regulares (
re.split) para fragmentar por.,!,?y saltos de línea\n. - Peticiones Concurrentes: Utilizar
asyncio.gatherpara traducir todos los fragmentos simultáneamente. Esto evita que el bot se vuelva lento a pesar de hacer más peticiones a la API. - Detección Localizada: Al procesar frases cortas, LibreTranslate podrá detectar correctamente el idioma de cada fragmento individual.
Fase C: Reconstrucción y Formatos Especiales
- Discord: Mantener la protección de etiquetas
<mX />para menciones de roles y canales. - 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.
- 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)
- Refactorizar
botdiscord/translate.py: Implementar la lógica de segmentación por oraciones. - Actualizar Bot Telegram: Reemplazar
translate_text_telegrampor la nueva función centralizada. - Actualizar Bot Discord: Modificar el callback en
ui.pypara usar la nueva segmentación.