Перевод для 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...