Перевод для Translate с тегами [:]

by rga4

HTML

<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Переводчик</title>
</head>
<body>
    <h2>Перевод текста</h2>
    <textarea id="text" rows="4" cols="50" placeholder="Введите текст"></textarea><br>
    <label>Исходный язык:</label>
    <select id="sourceLang">
        <option value="auto">Авто</option>
        <option value="ru">Русский</option>
        <option value="ua">Украинский</option>
        <option value="en">Английский</option>
    </select><br>
    <label><input type="checkbox" id="langRu"> Русский</label>
    <input type="text" id="tagRu" placeholder="ru"><br>
    <label><input type="checkbox" id="langUa"> Украинский</label>
    <input type="text" id="tagUa" placeholder="ua"><br>
    <label><input type="checkbox" id="langEn"> Английский</label>
    <input type="text" id="tagEn" placeholder="en"><br>
    <button onclick="translateText()">Перевести</button>

    <h2>Результат:</h2>
    <textarea id="result" rows="4" cols="50" placeholder="Здесь будет результат"></textarea><br>
    <button onclick="copyToClipboard()">Скопировать в буфер обмена</button>
</body>
</html>

JavaScript

async function translateText() {
    // Получаем данные из формы
    const text = document.getElementById('text').value.trim();
    let sourceLang = document.getElementById('sourceLang').value;
    const langRu = document.getElementById('langRu').checked;
    const langUa = document.getElementById('langUa').checked;
    const langEn = document.getElementById('langEn').checked;
    const tagRu = document.getElementById('tagRu').value || 'ru';
    const tagUa = document.getElementById('tagUa').value || 'ua';
    const tagEn = document.getElementById('tagEn').value || 'en';

    // Проверка на пустой ввод
    if (!text) {
        document.getElementById('result').textContent = 'Ошибка: Введите текст для перевода';
        return;
    }

    // Маппинг пользовательских тегов на коды языков для API
    const langMap = {
        'ru': 'ru',  // Русский
        'ua': 'uk',  // Украинский (ua -> uk)
        'en': 'en'   // Английский
    };

    // Формируем список языков для перевода
    const languages = [];
    if (langRu && sourceLang !== 'ru') languages.push({ lang: 'ru', tag: tagRu });
    if (langUa && sourceLang !== 'uk') languages.push({ lang: 'uk', tag: tagUa }); // Используем 'uk' для украинского
    if (langEn && sourceLang !== 'en') languages.push({ lang: 'en', tag: tagEn });

    let result = '';

    // Автоматическое определение языка, если sourceLang = 'auto'
    if (sourceLang === 'auto') {
        sourceLang = await detectLanguage(text);
        if (!sourceLang) {
            document.getElementById('result').textContent = 'Ошибка: Не удалось определить язык';
            return;
        }
    }

    // Добавляем исходный текст, если он соответствует выбранному языку
    if (sourceLang === 'ru' && langRu) result += `[:${tagRu}]${text}`;
    else if (sourceLang === 'uk' && langUa) result += `[:${tagUa}]${text}`;
    else if (sourceLang === 'en' && langEn) result += `[:${tagEn}]${text}`;

    // Выполняем перевод на выбранные языки
    for (const lang of...