Fix: Preservar saltos de línea en traducciones de Telegram

- El patrón /\s+/ estaba colapsando TODOS los espacios en blanco incluyendo \n
- Cambiar a /[ \t]+/ para colapsar solo espacios horizontales
- Agregar limpieza de saltos de línea múltiples preservando estructura
- Aplicado en: create_message.php, process_queue.php, discord_bot.php, telegram_bot_webhook.php

Soluciona: 'Hola a todos, El orden de la lista\n\nMiguel\n\nnickpons\n\nLuis'
se traducía como 'Olá a todos, A ordem da listaMiguelnickponsLuis' (sin saltos)
This commit is contained in:
2026-02-19 15:58:39 -06:00
parent a4dd8fefe8
commit 3519853bb6
4 changed files with 28 additions and 5 deletions

View File

@@ -125,8 +125,17 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST['
$sender = \Common\Helpers\SenderFactory::create($schedule['platform']);
// Obtener botones de traducción (convertir HTML a texto plano)
$plainText = html_entity_decode(strip_tags($schedule['content']), ENT_QUOTES | ENT_HTML5, 'UTF-8');
$plainText = preg_replace('/\s+/', ' ', $plainText);
$plainText = $schedule['content'];
// Convertir saltos de párrafo a saltos de línea
$plainText = preg_replace('/<\/p>/i', "\n", $plainText);
$plainText = preg_replace('/<p[^>]*>/i', '', $plainText);
$plainText = preg_replace('/<br\s*\/?>/i', "\n", $plainText);
// Eliminar HTML
$plainText = html_entity_decode(strip_tags($plainText), ENT_QUOTES | ENT_HTML5, 'UTF-8');
// Limpiar espacios múltiples pero preservar saltos de línea
$plainText = preg_replace('/[ \t]+/', ' ', $plainText);
$plainText = preg_replace('/\n\s*\n/', "\n", $plainText);
$plainText = trim($plainText);
$translationButtons = getTranslationButtons($pdo, $plainText);
$segments = $sender->parseContent($schedule['content']);