diff --git a/src/endpoints/translate.js b/src/endpoints/translate.js index 175b9eb09..74285f605 100644 --- a/src/endpoints/translate.js +++ b/src/endpoints/translate.js @@ -76,40 +76,52 @@ router.post('/google', jsonParser, async (request, response) => { } console.log('Input text:', text); - console.log('----------'); + //console.log('----------'); // Применяем форматирование только если язык перевода - русский if (lang === 'ru') { + // Заменяем кавычки и звездочки на специальные маркеры перед переводом с пробелами const openQuote = '__OPEN_QUOTE__ '; const closeQuote = ' __CLOSE_QUOTE__'; const openStar = '__OPEN_STAR__ '; const closeStar = ' __CLOSE_STAR__'; + // Очень редкий случай, вызванный правилами русской граматики const very_rare_execption = '__OPEN_STAR__, '; + // Используем счетчики для чередования между открывающими и закрывающими маркерами let quoteCounter = 0; let starCounter = 0; text = text.replace(/"/g, () => (quoteCounter++ % 2 === 0 ? openQuote : closeQuote)); text = text.replace(/\*/g, () => (starCounter++ % 2 === 0 ? openStar : closeStar)); - console.log('Pre-Input text:', text); - console.log('----------'); + //console.log('Pre-Input text:', text); + //console.log('----------'); } const url = generateRequestUrl(text, { to: lang }); https.get(url, (resp) => { - let data = ''; + let data = []; resp.on('data', (chunk) => { - data += chunk; + data.push(chunk); }); resp.on('end', () => { try { - const result = normaliseResponse(JSON.parse(data)); - console.log('Pre-Translated text:', result.text); - console.log('----------'); + let result; + if (lang === 'ru') { + // Декодирование для русского языка + const decodedData = iconv.decode(Buffer.concat(data), 'utf-8'); + result = normaliseResponse(JSON.parse(decodedData)); + } else { + // Для других языков используем данные как есть + result = normaliseResponse(JSON.parse(Buffer.concat(data).toString())); + } + + //console.log('Pre-Translated text:', result.text); + //console.log('----------'); let fixedText = result.text;