Неверное поведение API перевода Google с тегами notranslate - PullRequest
0 голосов
/ 17 декабря 2018

Google Translate API позволяет указывать куски текста, которые не следует переводить с помощью

<span translate='no'>Skip this text while translating</span>

В некоторых случаях некорректное поведение с непереведенными тегами приводит к тому, что API перевода пропускает один изслова и дублировать непереведенный тег.Ввод API перевода:

0c40152c asdasd alsdls3 ec3f297a <span translate="no">AAAAA123AAAA</span> Nov 30 translate

При переводе с итальянского на английский (не уверен, что язык имеет значение) возвращается следующий результат:

0c40152c asdasd alsdls3 ec3f297a <span translate="no">AAAAA123AAAA</span> Nov 30 <span translate="no">AAAAA123AAAA</span>

Обратите внимание, что 'translate 'в конце текста заменяется непереведенным тегом.Эта проблема возникает, если вместо <span translate='no'> я использую альтернативный синтаксис: <span class='notranslate'>.

Это известная ошибка?Есть ли разумный обходной путь?

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Это известная ошибка?

Да: https://issuetracker.google.com/issues/121076288

Проблема перевода с классом notranslate в теге span

Проблема, с которой вы столкнулись:
API перевода дает неверные результаты перевода с немецкого на арабский

текст на немецком языке:
QANTARA Migration - Kostenfreie Erstprüfung Ihrer Chancen für die erfolgreiche Иммиграция nach Deutschland

Арабский перевод:
QANTARAМиграция - إجراء فحص أولي مجاني لفرص نجاح QANTARA Миграция إلى ألمانيا

То, что вы ожидали, произойдет:
Правильный перевод без удвоения промежутка с нотранслетом - это было удвоено * в арабском переводе, как вы видите * 10191020 *

Есть также несколько других, которые кажутся родственными, например https://issuetracker.google.com/issues/74168658 и https://issuetracker.google.com/issues/35902695.

Есть ли разумный обходной путь?

Только хакерские, ябоюсь.

Самый простой обходной путь - просто заменить такие разделы токеном, например, уникальным числом илиУверен, что Translate достаточно умен, чтобы не трогать, не переводить, а потом менять исходную строку.

Более общее решение - использовать что-то вроде ModelFront (полное раскрытие: я работаю там) обнаруживать ошибки и что-то делать только в этих случаях.

0 голосов
/ 20 декабря 2018

Кажется, вы указали итальянский в качестве языка ввода, но в тексте очень мало слов, которые можно перевести (например, «перевести»), и они не распознаются на исходном языке.Это может привести к проблемам с алгоритмом перевода, который, кажется, имеет место здесь.

Обходным путем будет установка исходного языка для получения автоматически определяемого API и проверка достоверность :

Значение достоверности - это необязательное значение с плавающей запятой между 0 и 1. Чем ближе это значение к 1, тем выше уровень достоверности для определения языка.Этот член не всегда доступен

Если значение достоверности достаточно велико для ваших нужд, он попытается определить соответствующий исходный язык для перевода.

Возможно, добавлен еще один обходной путьчем больше слов в тексте, тем больше у алгоритма данных для работы. Я протестировал API с тем же вводом, который вы описали, но добавил еще несколько слов.Результат будет ожидаемым.

...