Volver al blog
Split-screen flat illustration on a white background. Left side shows a simple document icon labeled “.txt” in muted blue-grey, producing a single output document tagged “EN.” Right side shows a JSON file with visible nested keys, connected to three separate document outputs labeled “EN,” “FR,” and “ES.” The right side uses teal and amber accents. A thin vertical line divides the two halves. Clean geometric style, minimal detail, no people or branding.

PolyLingo vs DeepL API: ¿Cuál preserva mejor JSON y Markdown?

By Robert M

PolyLingo vs DeepL API: ¿cuál preserva mejor JSON y Markdown?

DeepL crea un software de traducción realmente excelente. Su motor de traducción neuronal es ampliamente considerado como uno de los mejores disponibles, y para prosa simple es difícil de superar. Si estás traduciendo oraciones, párrafos o documentos escritos como texto continuo, DeepL es una opción sólida.

La pregunta que responde esta publicación es más específica: ¿cómo funciona la API de DeepL cuando tu contenido tiene estructura? Cuando necesitas traducir un archivo de localización JSON sin tocar las claves, o una publicación de blog en Markdown sin romper la sintaxis, o una página HTML sin dañar los atributos. ¿Y cómo se compara con PolyLingo para ese caso de uso específico?


Cómo está construida la API de DeepL

La API de traducción de texto de DeepL acepta texto plano. Ese es su formato de entrada nativo. Cada solicitud acepta hasta 50 cadenas de texto y se traducen de forma independiente, sin contexto compartido entre ellas. Solo se puede especificar un idioma de destino por solicitud. Si necesitas cinco idiomas, haces cinco solicitudes.

DeepL también soporta la traducción de documentos para formatos como PDF, Word, PowerPoint y HTML, pero eso se realiza a través de un endpoint de documentos separado con un flujo diferente: subir el archivo, consultar hasta que termine, descargar el resultado. Está diseñado para documentos de oficina, no para pipelines de contenido programáticos.

Para HTML específicamente, hay un parámetro tag_handling que puedes establecer en html, que indica a DeepL que trate la entrada como HTML e intente preservar las etiquetas. Esto funciona razonablemente bien para marcado simple, pero es una bandera opcional que debes saber establecer, y no se extiende a JSON o Markdown.

Para JSON, no hay soporte nativo. El endpoint de texto de DeepL no sabe qué es una clave JSON. Si le envías un objeto JSON serializado, traducirá el contenido como una cadena y no hay garantía de que las claves, la estructura o los valores no cadena sobrevivan intactos. La biblioteca R babeldown, que envuelve DeepL para contenido Markdown, ha documentado casos donde DeepL confunde la puntuación dentro de enlaces y formatos Markdown, lo cual es una limitación conocida de pasar texto estructurado a través de un motor de traducción de texto plano.

Esto no es una crítica a DeepL. Es una descripción de para qué fue diseñada la API. El caso de uso principal de DeepL es la traducción de alta calidad de prosa legible por humanos. Eso es para lo que optimiza y en eso es excelente.


Dónde se nota la diferencia en la práctica

La diferencia se hace visible en el momento en que tu contenido no es prosa simple.

Considera un archivo de localización estándar de Next.js:

{
  "nav": {
    "home": "Inicio",
    "about": "Sobre nosotros",
    "contact": "Contacto"
  },
  "hero": {
    "title": "Bienvenido a nuestra plataforma",
    "subtitle": "Todo lo que necesitas en un solo lugar"
  }
}

Para traducir esto con la API de DeepL a cinco idiomas necesitarías:

  1. Extraer cada valor de cadena individualmente
  2. Hacer una solicitud API separada por idioma (cinco idiomas, cinco solicitudes)
  3. Reconstruir la estructura JSON con los valores traducidos en los lugares correctos
  4. Manejar cualquier caso donde la traducción haya alterado la puntuación o introducido caracteres que rompan la validez JSON

Eso es una cantidad no trivial de código de pegamento. También es frágil. Cualquier desviación en la salida de la traducción respecto a lo que espera tu analizador causará un fallo silencioso o un error en tiempo de ejecución en tu aplicación.

Con PolyLingo envías el objeto tal cual con format: "json" y recibes de vuelta una versión traducida de la estructura completa para cada idioma destino en una sola respuesta. Las claves permanecen intactas. El anidamiento se preserva. Los valores no cadena quedan sin tocar. La salida se integra directamente en tu proyecto.

curl -sS -X POST "https://api.usepolylingo.com/v1/translate" \
  -H "Authorization: Bearer $POLYLINGO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "{\"nav\":{\"home\":\"Inicio\",\"about\":\"Sobre nosotros\"}}",
    "format": "json",
    "targets": ["fr", "de", "es", "ja", "nl"]
  }'

Una solicitud. Cinco idiomas. Estructura intacta.


Contenido Markdown

El mismo patrón se aplica a Markdown. El endpoint de texto de DeepL no tiene concepto de sintaxis Markdown. Envíale una publicación de blog y procesará todo como una cadena. Los encabezados pueden sobrevivir. Los bloques de código casi seguro que no, ya que el contenido dentro de ellos probablemente se trate como texto traducible. La sintaxis de enlaces puede verse dañada, especialmente alrededor de la puntuación en los límites del texto del enlace.

La bandera de formato markdown de PolyLingo indica al modelo que trate la sintaxis Markdown como estructural y no traducible. Los encabezados permanecen encabezados. Los bloques de código delimitados se dejan verbatim. Las URLs de los enlaces no se alteran. Solo cambia el contenido en prosa.

Para un sitio de documentación o un blog con contenido técnico, la diferencia es significativa. Un bloque de código corrupto en un tutorial no es un problema menor de presentación, es un tutorial roto.


La diferencia de una solicitud vs una por idioma

Vale la pena detenerse en esto porque las implicaciones de costo son reales.

La API de DeepL acepta solo un idioma destino por solicitud. Para traducir un contenido a diez idiomas haces diez llamadas API. Para un sitio grande o un CMS con publicaciones frecuentes, eso es diez veces la sobrecarga de solicitudes, diez veces la latencia a gestionar y diez veces los puntos de fallo.

PolyLingo acepta un array de códigos de idiomas destino y devuelve todas las traducciones en una sola respuesta. Treinta y seis idiomas es una solicitud, no treinta y seis.

Para proyectos pequeños la diferencia es manejable. Para cualquier cosa a escala cambia la arquitectura de cómo construyes tu pipeline de traducción.


Modelo de precios

DeepL cobra por carácter. El plan gratuito de la API permite hasta 500,000 caracteres por mes, y los planes de pago facturan según el consumo de caracteres. Debido a que haces una solicitud por idioma, el conteo de caracteres para un contenido se multiplica por el número de idiomas destino a los que lo envías en solicitudes separadas.

PolyLingo cobra por token y cuenta a través de la entrada y salida combinadas para todos los idiomas en una sola solicitud. La facturación es transparente y predecible: el nivel gratuito incluye 50,000 tokens por mes, con planes de pago desde $9 al mes por 600,000 tokens.

Los dos modelos no son directamente comparables en costo por palabra porque usan unidades diferentes, pero la arquitectura de una sola solicitud para todos los idiomas de PolyLingo significa que no multiplicas linealmente tu número de solicitudes con el número de idiomas destino.


Dónde encaja cada uno

La API de DeepL es la elección correcta cuando:

  • Tu contenido es prosa simple sin requisitos estructurales
  • La calidad de traducción para texto legible por humanos es la principal preocupación
  • Estás traduciendo a un pequeño número de idiomas y el volumen de solicitudes es bajo
  • Ya estás invertido en el ecosistema DeepL y usas su glosario o funciones de formalidad
  • Necesitas soporte para un idioma fuera de los 36 actuales de PolyLingo (DeepL soporta más de 100 idiomas)

PolyLingo es la elección correcta cuando:

  • Tu contenido es JSON, Markdown o HTML y la estructura debe preservarse
  • Necesitas traducir a múltiples idiomas en una sola llamada API
  • Estás construyendo una integración CMS o pipeline i18n donde la eficiencia de solicitudes importa
  • Quieres una interfaz consistente en todos los formatos de contenido sin soluciones específicas por formato
  • Quieres facturación basada en tokens con una asignación mensual predecible

Resumen lado a lado

PolyLingoDeepL API
Soporte nativo JSONNo
Soporte nativo MarkdownNo
Soporte HTMLSí (flag tag_handling)
Todos los idiomas en una solicitudNo, un idioma por solicitud
Detecta automáticamente el formato de contenidoNo
Idiomas soportados36100+
Nivel gratuito50,000 tokens/mes500,000 caracteres/mes
Unidad de facturaciónTokenCarácter
Traductor web sin códigoSí (app web)

DeepL tiene un catálogo de idiomas más grande y un historial más largo en calidad de traducción de prosa. PolyLingo está diseñado específicamente para flujos de trabajo de contenido estructurado donde la integridad del formato es innegociable.

Resuelven problemas adyacentes. La elección correcta depende de cómo es realmente tu contenido.


Prueba PolyLingo

El nivel gratuito incluye 50,000 tokens por mes. No se requiere tarjeta de crédito. La documentación completa de la API está en usepolylingo.com/docs.

curl -sS -X POST "https://api.usepolylingo.com/v1/translate" \
  -H "Authorization: Bearer $POLYLINGO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "# Hola\n\nEste es un contenido **estructurado**.",
    "format": "markdown",
    "targets": ["fr", "de", "es"]
  }'

Obtén tu clave API