cjvnjde / google-translate-api-browser

A free and unlimited API for Google Translate
https://www.npmjs.com/package/google-translate-api-browser
MIT License
213 stars 31 forks source link

[BUG] Translation produces incomplete results #41

Open Cohee1207 opened 8 months ago

Cohee1207 commented 8 months ago

Environment

Package version: 4.3.2 Node version: v21.6.1 OS: macOS Sonoma 14.2

Description

The newest version produces bad quality and incomplete translations which often lack some chunks of text and/or has garbled formatting.

Steps to reproduce

const { translate } = require('google-translate-api-browser');

const text = `*The vagabond jolts in surprise, instinctively trying to yank her arm free. Her hood falls back, revealing her unusual marine features - pale blue skin, protruding dog ears, and wispy tentacles swaying from her head. Her crimson eyes narrow as she glares defiantly at the human.*
"Unhand me, surface dweller! I took only what I needed to survive." *Her synthesized voice crackles with a mixture of defiance and desperation.* "My people's war has left me exiled and starving. I meant no harm, I swear it!"
*The grip on her wrist doesn't loosen. The vagabond's free hand moves toward the hilt of her dulled scythe, ready to defend herself if need be. But her sunken eyes betray her weakened state - she likely couldn't put up much of a fight. Not anymore.*`;

(async () => {
    const result = await translate(text, { to: 'ru' });
    console.log(result.text);
})();

Actual result

*Бродяга с удивлением, инстинктивно пытаясь вырвать ее руку. Ее капюшон отступает, раскрывая ее необычные морские черты - бледно -голубую кожу, выступающие уши собаки и тонкие щупальцы, раскачивающиеся с ее головы. Ее малиновые глаза сужаются, когда она вызывающе смотрит на человека. 
 «Не замудим, поверхностный житель! Я взял только то, что мне нужно, чтобы выжить». * Ее синтезированный голос потрескается со смесью неповиновения и отчаяния.* «Война моего народа оставила меня изгнанием и голодом. Я имел в виду никакого вреда, клянусь!» 
 *Захват ее запястья не ослабляет. Свободная рука бродяга движется к рукояти ее прикованной косы, готовой защитить себя, если это необходимо. Но ее затонувшие глаза предают ее ослабленное состояние - она, вероятно, не могла нанести большую драку. Уже нет.*

Expected result

An older version (I'm stuck with 3.0.1 for a while) returns a complete, good-quality translation:

Бродяга вздрагивает от удивления, инстинктивно пытаясь выдернуть руку. Капюшон откидывается назад, обнажая ее необычные морские черты лица: бледно-голубую кожу, торчащие собачьи уши и тонкие щупальца, покачивающиеся на голове. Ее малиновые глаза сужаются, когда она вызывающе смотрит на человека.
«Отпусти меня, житель поверхности! Я взял только то, что мне нужно, чтобы выжить». В ее синтезированном голосе звучит смесь неповиновения и отчаяния. «Война моего народа оставила меня в изгнании и умирала от голода. Я не хотела причинить вреда, клянусь!»
Хватка на ее запястье не ослабляется. Свободная рука бродяги тянется к рукоятке тупой косы, готовая защититься в случае необходимости. Но ее запавшие глаза выдают ее ослабленное состояние — она, вероятно, не смогла бы выдержать большую борьбу. Уже нет.
Cohee1207 commented 8 months ago

Sorry for all the issues, I'm trying to get rid of npm's audit alert for my worried users 😃

cjvnjde commented 8 months ago

Hi! Thanks for the issues) Unfortunately, I don't have enough time to fix everything. It's probably a problem with special characters. Google translate request format is very inconvenient -_-

Most likely, I won't be able to fix it until the weekend. In any case, pull requests are welcome =)

cjvnjde commented 8 months ago

Unfortunately, GT requires X-Goog-BatchExecute-Bgr header to get better results (and probably to have the ability to translate image data). But I haven't found an algorithm for it, and reverse engineering will take a significant amount of time

Asmedian commented 3 months ago

Unfortunately, GT requires X-Goog-BatchExecute-Bgr header to get better results (and probably to have the ability to translate image data). But I haven't found an algorithm for it, and reverse engineering will take a significant amount of time

https://github.com/ssut/py-googletrans/issues/268#issuecomment-1935979166 If the comment is correct, please update the package with the optional endpoint selection feature. Thank you.