번역 미리보기
발송 시 `translate`가 만들어 낼 결과를, 아무것도 보내지 않고 아무것도 저장하지 않고 보여 줍니다.
본인 키로 워크스페이스에 실제 호출을 실행합니다.
POST /emails/translate
발송 시 translate가 만들어 낼 결과를, 아무것도 보내지 않고 아무것도 저장하지 않고 보여 줍니다.
요청
발송이 처리하는 것과 같은 세 가지 옵션에서 봉투만 뺀 것을, 발송 경로가 호출하는 바로 그 함수에 통과시킵니다. 이 동일성이 이 엔드포인트의 존재 이유 전부입니다. 자체 코드를 가진 미리보기는 지키지 못할 약속이 되고, 둘이 어긋나는 날 누군가의 화면에 있는 것과 수신자의 받은편지함에 있는 것이 달라지면서도 그 사실을 알려 줄 방법이 없게 됩니다.
매개변수
tostring필수- 어떤 언어로 쓸지입니다. BCP-47 코드(`de`), 영어 이름("German"), 또는 그 언어 자신의 이름("Deutsch")입니다. 응답은 어떤 코드로 해석되었는지 알려 주며, 연락처별 언어를 저장한다면 그 형태를 저장하면 됩니다.
htmlstring- HTML 본문이며 최대 1메가바이트입니다. html, text, subject 중 하나는 반드시 있어야 합니다.
textstring- 평문 부분입니다. `html`과는 독립적으로, 자체 길이 검사와 함께 번역됩니다.
subjectstring- 제목 줄 자체입니다. 발송 시 `translate` 아래에서와 달리 boolean이 아니라 string입니다. 둘은 서로 다른 질문입니다. 거기서는 이미 우리가 갖고 있는 제목을 번역할지 여부를 말하는 것이고, 여기서는 제목을 직접 건네는 것입니다.
fromstring- 원문을 어떤 언어로 썼는지이며, 위와 같은 세 가지 형태 모두 가능합니다. 명시하면 판별 호출을 건너뜁니다.
includeOriginalboolean- 반환되는 `html`이 번역문 아래에 원문을 이미 담고 있는지 여부입니다. 기본값은 true입니다.
다른 곳과 마찬가지로 알 수 없는 키는 422입니다. html, text, subject가 모두 없는 요청은 html에 대한 422이며, "html, text, subject 중 하나는 필수입니다"라고 알려 줍니다.
미리보기
작성기가 보내려는 내용을 사람에게 보여 주기 전에 수행하는 왕복입니다.
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의 내용을 바꾸기 때문입니다. 켜져 있으면 본문에 이미 번역문 아래 원문이 담겨 있으므로, 직접 사본을 덧붙이면 두 번 보내게 됩니다.
미리보기, 편집, 발송
이 기능이 상정한 흐름은 미리보기, 편집, 발송입니다. 사람에게 번역을 보여 주고, 고칠 수 있게 하고, 승인된 내용을 요청에 translate 없이 평범한 html과 subject로 보내는 것입니다. 그러면 승인된 내용이 한 글자도 다르지 않게 그대로 나갑니다.
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로 보호됩니다. 발신자가 이미 할 수 없던 일을 허용하지 않으며, 동의 화면에서emails:send와 구분되지 않는 스코프를 하나 더 두면 그 목록의 다른 모든 스코프의 의미가 조금씩 옅어지기 때문입니다.
본문은 발송이 허용하는 것과 같은 1메가바이트로 제한되지만, 번역 자체는 30,000자를 넘는 것을 translation_too_long으로 거부합니다. 실패 코드는 번역 발송이 반환하는 것과 동일하며, 이메일 보내기 항목에 정리되어 있습니다.