Fix for other languages

But again small problem with decodig
This commit is contained in:
Himickoff 2024-07-14 01:29:33 +07:00
parent 9cdf2216a2
commit 00350df82d
1 changed files with 4 additions and 17 deletions

View File

@ -67,6 +67,7 @@ router.post('/libre', jsonParser, async (request, response) => {
router.post('/google', jsonParser, async (request, response) => {
try {
const { generateRequestUrl, normaliseResponse } = require('google-translate-api-browser');
let text = request.body.text;
const lang = request.body.lang;
@ -77,19 +78,14 @@ router.post('/google', jsonParser, async (request, response) => {
console.log('Input text:', text);
console.log('----------');
let originalText = text;
// Применяем форматирование только если язык перевода - русский
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;
@ -103,24 +99,15 @@ router.post('/google', jsonParser, async (request, response) => {
const url = generateRequestUrl(text, { to: lang });
https.get(url, (resp) => {
let data = [];
let data = '';
resp.on('data', (chunk) => {
data.push(chunk);
data += chunk;
});
resp.on('end', () => {
try {
let result;
if (lang === 'ru') {
// Декодирование и нормализация только для русского языка
const decodedData = iconv.decode(Buffer.concat(data), 'utf-8');
result = normaliseResponse(JSON.parse(decodedData));
} else {
// Для других языков используем данные как есть
result = JSON.parse(Buffer.concat(data).toString());
}
const result = normaliseResponse(JSON.parse(data));
console.log('Pre-Translated text:', result.text);
console.log('----------');