- admin/recipients.php: tablas, modales, labels - admin/comandos.php: títulos, tablas, descripciones - admin/test_discord_connection.php: formularios, alertas - admin/ia_agent.php: configuración, parámetros - profile.php: información, formulario contraseña - set_webhook.php: alertas, formularios - chat_telegram.php: usuarios, historial - translate_message.php: formulario de traducción
118 lines
4.7 KiB
PHP
Executable File
118 lines
4.7 KiB
PHP
Executable File
<?php
|
|
require_once __DIR__ . '/includes/db.php';
|
|
require_once __DIR__ . '/includes/session_check.php';
|
|
require_once __DIR__ . '/includes/i18n.php';
|
|
checkSession();
|
|
require_once __DIR__ . '/includes/env_loader.php';
|
|
require_once __DIR__ . '/src/Translate.php';
|
|
|
|
$pageTitle = t('Traducir Mensaje');
|
|
|
|
$sourceText = $_GET['text'] ?? '';
|
|
$sourceLang = $_GET['source_lang'] ?? 'es';
|
|
$targetLang = $_GET['target_lang'] ?? 'en';
|
|
$translatedText = '';
|
|
$error = '';
|
|
|
|
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|
$sourceText = $_POST['source_text'] ?? '';
|
|
$sourceLang = $_POST['source_lang'] ?? 'es';
|
|
$targetLang = $_POST['target_lang'] ?? 'en';
|
|
|
|
if ($sourceText) {
|
|
try {
|
|
$translator = new src\Translate();
|
|
$translatedText = $translator->translate($sourceText, $sourceLang, $targetLang);
|
|
|
|
if (!$translatedText) {
|
|
$error = t('Error al traducir. Verifica la conexión con LibreTranslate.');
|
|
}
|
|
} catch (Exception $e) {
|
|
$error = $e->getMessage();
|
|
}
|
|
}
|
|
}
|
|
|
|
try {
|
|
$pdo = getDbConnection();
|
|
$stmt = $pdo->query("SELECT * FROM supported_languages WHERE is_active = 1 ORDER BY language_name");
|
|
$languages = $stmt->fetchAll();
|
|
} catch (Exception $e) {
|
|
$languages = [];
|
|
}
|
|
|
|
require_once __DIR__ . '/templates/header.php';
|
|
?>
|
|
|
|
<div class="d-flex justify-content-between align-items-center mb-4">
|
|
<h2><i class="bi bi-translate"></i> <?= t('Traducir Mensaje') ?></h2>
|
|
</div>
|
|
|
|
<?php if ($error): ?>
|
|
<div class="alert alert-danger"><?= htmlspecialchars($error) ?></div>
|
|
<?php endif; ?>
|
|
|
|
<div class="row">
|
|
<div class="col-md-6">
|
|
<div class="card border-0 shadow-sm">
|
|
<div class="card-header border-0">
|
|
<h5 class="mb-0"><?= t('Texto Original') ?></h5>
|
|
</div>
|
|
<div class="card-body">
|
|
<form method="POST">
|
|
<div class="mb-3">
|
|
<label class="form-label"><?= t('Idioma de origen') ?></label>
|
|
<select name="source_lang" class="form-select">
|
|
<?php foreach ($languages as $lang): ?>
|
|
<option value="<?= $lang['language_code'] ?>" <?= $sourceLang === $lang['language_code'] ? 'selected' : '' ?>>
|
|
<?= htmlspecialchars($lang['flag_emoji'] . ' ' . $lang['language_name']) ?>
|
|
</option>
|
|
<?php endforeach; ?>
|
|
</select>
|
|
</div>
|
|
|
|
<div class="mb-3">
|
|
<label class="form-label"><?= t('Texto a traducir') ?></label>
|
|
<textarea name="source_text" class="form-control" rows="8" required><?= htmlspecialchars($sourceText) ?></textarea>
|
|
</div>
|
|
|
|
<div class="mb-3">
|
|
<label class="form-label"><?= t('Idioma de destino') ?></label>
|
|
<select name="target_lang" class="form-select">
|
|
<?php foreach ($languages as $lang): ?>
|
|
<option value="<?= $lang['language_code'] ?>" <?= $targetLang === $lang['language_code'] ? 'selected' : '' ?>>
|
|
<?= htmlspecialchars($lang['flag_emoji'] . ' ' . $lang['language_name']) ?>
|
|
</option>
|
|
<?php endforeach; ?>
|
|
</select>
|
|
</div>
|
|
|
|
<button type="submit" class="btn btn-primary">
|
|
<i class="bi bi-translate"></i> <?= t('Traducir') ?>
|
|
</button>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-md-6">
|
|
<div class="card border-0 shadow-sm">
|
|
<div class="card-header border-0">
|
|
<h5 class="mb-0"><?= t('Traducción') ?></h5>
|
|
</div>
|
|
<div class="card-body">
|
|
<?php if ($translatedText): ?>
|
|
<textarea class="form-control" rows="12" readonly><?= htmlspecialchars($translatedText) ?></textarea>
|
|
<button class="btn btn-outline-secondary mt-2" onclick="navigator.clipboard.writeText('<?= htmlspecialchars(addslashes($translatedText)) ?>')">
|
|
<i class="bi bi-clipboard"></i> <?= t('Copiar') ?>
|
|
</button>
|
|
<?php else: ?>
|
|
<p class="text-muted text-center py-5"><?= t('Traducción aparecerá aquí') ?></p>
|
|
<?php endif; ?>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<?php require_once __DIR__ . '/templates/footer.php'; ?>
|