Предпросмотр перевода
Что выдал бы `translate` при отправке, при этом ничего не отправляется и ничего не сохраняется.
Выполняет настоящий запрос в вашем рабочем пространстве, с вашим собственным ключом.
POST /emails/translate
Что выдал бы translate при отправке, при этом ничего не отправляется и ничего не сохраняется.
Запрос
Те же три параметра, которые разрешает отправка, минус конверт, пропускаются через ту же функцию, что вызывает путь отправки. Эта идентичность и есть вся ценность эндпоинта: предпросмотр с собственным кодом был бы обещанием, которого мы не держим, и в тот день, когда они разойдутся, то, что на экране у человека, и то, что во входящих у получателя, будут отличаться, и ничто об этом не скажет.
Параметры
tostringобязательно- Язык, на котором писать. Код BCP-47 (`de`), английское название («German») или самоназвание языка («Deutsch»). Ответ сообщает, в какой код это разрешилось, и именно эту форму стоит хранить, если вы держите язык по каждому контакту.
htmlstring- HTML-тело, до мегабайта. Требуется одно из html, text или subject.
textstring- Текстовая часть. Переводится независимо от `html`, со своей собственной проверкой длины.
subjectstring- СТРОКА темы: именно строка, а не булево значение, каким она является внутри `translate` при отправке. Это два разных вопроса: там вы говорите, переводить ли тему, которая у нас уже есть, а здесь вы её передаёте.
fromstring- Язык, на котором вы написали, в любой из тех же трёх форм. Его указание избавляет от вызова определения языка.
includeOriginalboolean- Несёт ли возвращаемый `html` ваш оригинал под переводом. По умолчанию true.
Неизвестные ключи дают 422, как и везде. Запрос, в котором нет ни html, ни text, ни subject, даёт 422 по html: «One of html, text or subject is required».
Предпросмотр
Тот самый цикл, который выполняет редактор, прежде чем показать человеку, что он собирается отправить.
curl -X POST "$OE/emails/translate" -H "$AUTH" -H "Content-Type: application/json" \ -d '{ "subject": "Your September invoice", "html": "<p>Invoice attached. Payment is due on the 14th.</p>", "to": "de" }'{ "object": "translation", "language": { "code": "de", "label": "German", "native": "Deutsch", "flag": "🇩🇪", "rtl": false }, "detectedSourceLanguage": { "code": "en", "label": "English", "native": "English", "flag": "🇬🇧", "rtl": false }, "subject": "Ihre Rechnung für September", "html": "<p>Rechnung im Anhang. Zahlbar bis zum 14.</p>\n<div style=\"margin:28px 0 0;padding:14px 0 0;border-top:1px solid #d6dae0\">\n<div style=\"margin:0 0 10px;font-size:12px;line-height:1.5;color:#6b7280\">Ursprüngliche Nachricht (English)</div>\n<div><p>Invoice attached. Payment is due on the 14th.</p></div>\n</div>", "text": null, "includeOriginal": true}html, text и subject для поля, которое вы не отправляли, возвращаются как null, а не отсутствуют, поэтому клиент может отрисовать ответ, не помня, о чём спрашивал.
detectedSourceLanguage равен null, когда определение воздержалось. Это настоящий ответ, а не сбой. Тело из имён, чисел и ссылок не даёт ему ничего для чтения, и единственное следствие — что ваш оригинал подписан без указания языка.
includeOriginal возвращается в ответе, потому что он меняет содержимое html. Когда он включён, тело уже несёт ваш оригинал под переводом, и добавление собственной копии отправит его дважды.
Предпросмотр, правка, отправка
Сценарий, под который это сделано, — предпросмотр, ПРАВКА, отправка: покажите человеку перевод, дайте его изменить, затем отправьте одобренное как обычные html и subject, вообще без translate в запросе. Тогда одобренное им слово в слово совпадает с тем, что уходит.
curl -X POST "$OE/emails" -H "$AUTH" -H "Content-Type: application/json" \ -d '{ "from": "[email protected]", "to": ["[email protected]"], "subject": "Ihre Rechnung für September", "html": "<p>Rechnung im Anhang. Zahlbar bis zum 14.</p>" }'Отправка с translate после предпросмотра переводит второй раз и выбрасывает правки. Письмо ушло бы в формулировках, которых никто не читал, — а это ровно тот сбой, ради предотвращения которого предпросмотр и существует.
Во что это обходится и чего оно не делает
- Три обращения к модели (тело, тема и ещё одно, чтобы определить, на каком языке вы написали), выполняемые вместе, поэтому ожидание равно самому долгому из трёх, а не их сумме. Указание
fromубирает третье. Стоимость та же, что и у отправки сtranslate, поэтому делайте предпросмотр один раз, а не на каждую правку. - Ничего не отправляется, никакая запись не создаётся и никакой id не возвращается. Здесь нечего отменять и нечего получать позже.
- Он переводит и не делает ничего больше. Он не вычитывает, не улучшает текст и никогда не отвечает на сообщение.
- Имена, названия компаний, ссылки, номера заказов, цены и даты возвращаются такими же, какими были переданы, поэтому перевод можно построчно сверить с оригиналом.
- Цитируемая история не вырезается, в отличие от читающей половины. Переводится то, что вы передали, — это верно для редактора, где тело письма содержит только что написанное, и об этом стоит помнить, если вы отправляете целую цепочку ответов.
- Ограничен
emails:send, собственного scope у него нет: он не даёт ничего такого, чего отправитель и так не мог бы сделать, а scope, который никто не отличит отemails:sendна экране согласия, делает каждый другой scope в этом списке чуть менее значимым.
Тело ограничено тем же мегабайтом, что и при отправке, но сам перевод отклоняет всё свыше 30 000 символов с translation_too_long. Коды ошибок те же, что возвращает переведённая отправка, и перечислены в разделе Отправка письма.