Previsualizar una traducción
Lo que produciría `translate` en un envío, sin enviar nada ni almacenar nada.
Ejecuta la llamada real contra tu espacio de trabajo, con tu propia clave.
POST /emails/translate
Lo que produciría translate en un envío, sin enviar nada ni almacenar nada.
La solicitud
Las mismas tres opciones que resuelve un envío, menos el sobre, pasadas por la misma función que invoca la ruta de envío. Esa identidad es todo el valor del endpoint: una vista previa con código propio sería una promesa que no cumplimos, y el día en que ambas divergieran, lo que aparece en la pantalla de alguien y lo que llega a la bandeja del destinatario serían distintos sin nada que lo advirtiera.
Parámetros
tostringobligatorio- El idioma en el que escribir. Un código BCP-47 (`de`), un nombre en inglés ("German") o el nombre propio del idioma ("Deutsch"). La respuesta indica a qué código se resolvió, y esa es la forma que conviene almacenar si guardas un idioma por contacto.
htmlstring- El cuerpo HTML, hasta un megabyte. Se requiere uno de html, text o subject.
textstring- La parte de texto plano. Se traduce con independencia de `html`, con su propia comprobación de longitud.
subjectstring- La LÍNEA de asunto: un string, no el boolean que es dentro de `translate` en un envío. Son preguntas distintas: allí indicas si hay que traducir un asunto que ya tenemos, aquí nos entregas uno.
fromstring- El idioma en el que lo escribiste, en cualquiera de esas mismas tres formas. Indicarlo evita la llamada de detección.
includeOriginalboolean- Si el `html` devuelto ya incluye tu original debajo de la traducción. Su valor predeterminado es true.
Las claves desconocidas son un 422, como en todas partes. Una solicitud sin html, text ni subject es un 422 sobre html: "One of html, text or subject is required".
Previsualízalo
El viaje de ida y vuelta que hace el redactor antes de mostrarle a alguien lo que está a punto de enviar.
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 y subject vuelven como null en lugar de ausentes para un campo que no enviaste, de modo que un cliente puede representar la respuesta sin recordar qué pidió.
detectedSourceLanguage es null cuando la detección se abstuvo. Esa es una respuesta real y no un fallo. Un cuerpo de nombres, números y enlaces no le da nada que leer, y la única consecuencia es que tu original queda rotulado sin idioma.
includeOriginal se devuelve en la respuesta porque cambia lo que contiene html. Con la opción activada, el cuerpo ya incluye tu original debajo de la traducción, y añadir tu propia copia lo envía dos veces.
Previsualizar, editar, enviar
La forma para la que está pensado es previsualizar, EDITAR, enviar: muéstrale la traducción a una persona, deja que la modifique y luego envía lo que aprobó como un html y un subject normales, sin ningún translate en la solicitud. Lo que aprobó es entonces, palabra por palabra, lo que sale.
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>" }'Enviar con translate después de previsualizar traduce por segunda vez y descarta las ediciones. El envío saldría con una redacción que nadie ha leído, que es justo el fallo que la vista previa existe para evitar.
Lo que cuesta y lo que no hace
- Tres llamadas al modelo (el cuerpo, el asunto y una para averiguar en qué idioma escribiste) emitidas a la vez, así que la espera es la más larga de las tres y no su suma. Indicar
fromelimina la tercera. Cuesta lo mismo que enviar contranslate, así que previsualiza una vez y no en cada revisión. - No se envía nada, no se escribe ninguna fila y no se devuelve ningún id. Aquí no hay nada que cancelar ni recuperar después.
- Traduce y no hace nada más. No corrige, no mejora la redacción y nunca responde al mensaje.
- Los nombres, las empresas, los enlaces, los números de pedido, los precios y las fechas vuelven tal como entraron, de modo que la traducción se puede cotejar con el original línea por línea.
- El historial citado no se elimina, a diferencia de lo que ocurre en la parte de lectura. Lo que entregas es lo que se traduce, lo cual es correcto para un redactor, donde el cuerpo es solo lo que alguien acaba de escribir, y conviene tenerlo en cuenta si envías una cadena de respuestas completa.
- Requiere el scope
emails:sendy no tiene uno propio: no concede nada que un remitente no pudiera hacer ya, y un scope que nadie distingue deemails:senden una pantalla de consentimiento hace que todos los demás scopes de esa lista signifiquen un poco menos.
El cuerpo está limitado al mismo megabyte que permite un envío, pero la traducción en sí rechaza cualquier texto de más de 30 000 caracteres con translation_too_long. Los códigos de error son los que devuelve un envío traducido, enumerados en Enviar un correo electrónico.