Fix: Motor de traducción mejorado para mensajes multi-idioma y dinámicos
- Rediseñado translatePartial para manejar mezclas de idiomas (ej: 'Hello a todos') - Eliminados hardcodes de idiomas ES/PT, ahora es 100% dinámico - Corregido truncado de texto original en el webhook de Telegram - Mejorada la deduplicación y preservación de párrafos en traducciones - Fallback dinámico al primer idioma activo de la base de datos
This commit is contained in:
@@ -34,14 +34,19 @@ $discord->on(Event::GUILD_MEMBER_ADD, function (Member $member, Discord $discord
|
||||
try {
|
||||
$pdo = getDbConnection();
|
||||
|
||||
// Obtener idioma por defecto dinámico
|
||||
$stmtDefault = $pdo->query("SELECT language_code FROM supported_languages WHERE is_active = 1 LIMIT 1");
|
||||
$defaultLang = $stmtDefault->fetchColumn() ?: 'es';
|
||||
|
||||
$stmt = $pdo->prepare("
|
||||
INSERT INTO recipients (platform_id, name, type, platform, language_code, chat_mode)
|
||||
VALUES (?, ?, 'user', 'discord', 'es', 'agent')
|
||||
VALUES (?, ?, 'user', 'discord', ?, 'agent')
|
||||
ON DUPLICATE KEY UPDATE name = VALUES(name)
|
||||
");
|
||||
$stmt->execute([
|
||||
$member->user->id,
|
||||
$member->user->username
|
||||
$member->user->username,
|
||||
$defaultLang
|
||||
]);
|
||||
|
||||
echo "Usuario registrado en la base de datos" . PHP_EOL;
|
||||
@@ -338,7 +343,12 @@ function handleAutoTranslationWithButtons(PDO $pdo, Message $message, string $te
|
||||
|
||||
// Detectar idioma del mensaje (sin emojis para mejor precisión)
|
||||
$textForDetection = stripEmojisForDetection($text);
|
||||
$detectedLang = $translator->detectLanguage($textForDetection) ?? 'es';
|
||||
|
||||
// Obtener idioma por defecto dinámico
|
||||
$stmtDefault = $pdo->query("SELECT language_code FROM supported_languages WHERE is_active = 1 LIMIT 1");
|
||||
$defaultLang = $stmtDefault->fetchColumn() ?: 'es';
|
||||
|
||||
$detectedLang = $translator->detectLanguage($textForDetection) ?? $defaultLang;
|
||||
|
||||
// Obtener idiomas activos de la base de datos
|
||||
$stmt = $pdo->query("SELECT language_code, flag_emoji FROM supported_languages WHERE is_active = 1");
|
||||
@@ -470,14 +480,18 @@ function sendDiscordWelcomeMessage(PDO $pdo, Member $member, Discord $discord):
|
||||
|
||||
function registerDiscordUser(PDO $pdo, $user): void
|
||||
{
|
||||
// Obtener idioma por defecto de la base de datos (el primero activo)
|
||||
$stmtDefault = $pdo->query("SELECT language_code FROM supported_languages WHERE is_active = 1 LIMIT 1");
|
||||
$defaultLang = $stmtDefault->fetchColumn() ?: 'es';
|
||||
|
||||
$stmt = $pdo->prepare("
|
||||
INSERT INTO recipients (platform_id, name, type, platform, language_code, chat_mode)
|
||||
VALUES (?, ?, 'user', 'discord', 'es', 'agent')
|
||||
VALUES (?, ?, 'user', 'discord', ?, 'agent')
|
||||
ON DUPLICATE KEY UPDATE name = VALUES(name)
|
||||
");
|
||||
|
||||
$name = $user->username ?? 'Usuario';
|
||||
$stmt->execute([$user->id, $name]);
|
||||
$stmt->execute([$user->id, $name, $defaultLang]);
|
||||
}
|
||||
|
||||
function sendDiscordWelcomeMessageOnMessage(PDO $pdo, Message $message, string $username): void
|
||||
@@ -525,9 +539,8 @@ function handleTranslateInteraction($interaction, string $customId): void
|
||||
error_log("Acknowledge error: " . $e->getMessage());
|
||||
}
|
||||
|
||||
$textForDetection = stripEmojisForDetection($originalText);
|
||||
$sourceLang = $translator->detectLanguage($textForDetection) ?? 'es';
|
||||
$translated = $translator->translate($textForDetection, $sourceLang, $targetLang);
|
||||
$textForTranslation = stripEmojisForDetection($originalText);
|
||||
$translated = $translator->translatePartial($textForTranslation, $targetLang);
|
||||
|
||||
if ($translated) {
|
||||
$translated = strip_tags($translated);
|
||||
|
||||
Reference in New Issue
Block a user