Files
lastwar/includes/translation_helper.php

70 lines
2.3 KiB
PHP
Executable File

<?php
require_once __DIR__ . '/src/Translate.php';
function translateText(string $text, string $sourceLang, string $targetLang): ?string
{
$translator = new \src\Translate();
return $translator->translate($text, $sourceLang, $targetLang);
}
function detectLanguage(string $text): ?string
{
$translator = new \src\Translate();
return $translator->detectLanguage($text);
}
function getActiveLanguages(): array
{
$pdo = getDbConnection();
$stmt = $pdo->query("SELECT * FROM supported_languages WHERE is_active = 1 ORDER BY language_name");
return $stmt->fetchAll();
}
function queueTranslation(string $platform, int $chatId, int $userId, string $text, string $sourceLang): int
{
$pdo = getDbConnection();
$stmt = $pdo->prepare("
INSERT INTO translation_queue
(platform, chat_id, user_id, text_to_translate, source_lang, status, attempts, created_at)
VALUES (?, ?, ?, ?, ?, 'pending', 0, NOW())
");
$stmt->execute([$platform, $chatId, $userId, $text, $sourceLang]);
return (int) $pdo->lastInsertId();
}
function translateAndSendToPlatform(string $platform, int $chatId, string $htmlContent): void
{
$translator = new \src\Translate();
$converterClass = $platform === 'discord'
? \Discord\Converters\HtmlToDiscordMarkdownConverter::class
: \Telegram\Converters\HtmlToTelegramHtmlConverter::class;
$converter = new $converterClass();
$textContent = strip_tags($converter->convert($htmlContent));
$sourceLang = $translator->detectLanguage($textContent) ?? 'es';
$languages = getActiveLanguages();
$targetLangs = array_filter($languages, fn($l) => $l['language_code'] !== $sourceLang);
$translations = [];
foreach ($targetLangs as $lang) {
$translations[$lang['language_code']] = $translator->translate($textContent, $sourceLang, $lang['language_code']);
}
if ($platform === 'discord') {
$sender = new \Discord\DiscordSender();
$actions = new \Discord\Actions\DiscordActions();
$actions->sendWithTranslation((string)$chatId, $htmlContent, $translations);
} else {
$sender = new \Telegram\TelegramSender();
$actions = new \Telegram\Actions\TelegramActions();
$actions->sendWithTranslation((int)$chatId, $htmlContent, $translations);
}
}