
PolyLingo vs DeepL API: qual preserva melhor JSON e Markdown?
By Robert M
PolyLingo vs DeepL API: qual preserva melhor JSON e Markdown?
DeepL cria um software de tradução genuinamente excelente. Seu motor de tradução neural é amplamente considerado um dos melhores disponíveis, e para prosa simples é difícil de superar. Se você está traduzindo frases, parágrafos ou documentos escritos como texto contínuo, o DeepL é uma escolha forte.
A questão que este post responde é mais restrita: como a API do DeepL se comporta quando seu conteúdo tem estrutura? Quando você precisa traduzir um arquivo JSON de localização sem tocar nas chaves, ou um post de blog em Markdown sem quebrar a sintaxe, ou uma página HTML sem bagunçar os atributos? E como ela se compara ao PolyLingo para esse caso específico?
Como a API do DeepL é construída
A API de tradução de texto do DeepL aceita texto simples. Esse é seu formato de entrada nativo. Cada requisição aceita até 50 strings de texto e elas são traduzidas independentemente, sem contexto compartilhado entre elas. Apenas um idioma alvo pode ser especificado por requisição. Se você precisa de cinco idiomas, faz cinco requisições.
O DeepL suporta tradução de documentos para formatos como PDF, Word, PowerPoint e HTML, mas isso passa por um endpoint de documento separado com um fluxo diferente: enviar o arquivo, consultar a conclusão, baixar o resultado. É projetado para documentos de escritório, não para pipelines programáticos de conteúdo.
Para HTML especificamente, há um parâmetro tag_handling que você pode definir como html, que diz ao DeepL para tratar a entrada como HTML e tentar preservar as tags. Isso funciona razoavelmente bem para marcação simples, mas é uma flag opcional que você precisa saber para definir, e não se estende a JSON ou Markdown.
Para JSON, não há suporte nativo. O endpoint de texto do DeepL não sabe o que é uma chave JSON. Se você enviar um objeto JSON serializado, ele traduzirá o conteúdo como uma string e não há garantia de que as chaves, estrutura ou valores não-string sobreviverão intactos. A biblioteca R babeldown, que envolve o DeepL para conteúdo Markdown, documentou casos onde o DeepL confunde pontuação dentro de links e formatação Markdown, o que é uma limitação conhecida de passar texto estruturado por um motor de tradução de texto simples.
Isso não é uma crítica ao DeepL. É uma descrição do que a API foi projetada para fazer. O caso de uso principal do DeepL é tradução de alta qualidade de prosa legível por humanos. É para isso que ele é otimizado e é excelente nisso.
Onde a diferença aparece na prática
A diferença fica visível no momento em que seu conteúdo não é prosa simples.
Considere um arquivo de localização padrão do Next.js:
{
"nav": {
"home": "Home",
"about": "Sobre nós",
"contact": "Entre em contato"
},
"hero": {
"title": "Bem-vindo à nossa plataforma",
"subtitle": "Tudo que você precisa em um só lugar"
}
}
Para traduzir isso com a API do DeepL para cinco idiomas você precisaria:
- Extrair cada valor de string individualmente
- Fazer uma requisição API separada por idioma (cinco idiomas, cinco requisições)
- Reconstruir a estrutura JSON com os valores traduzidos nos lugares certos
- Tratar quaisquer casos onde a tradução alterou pontuação ou introduziu caracteres que quebram a validade do JSON
Isso é uma quantidade não trivial de código de cola. Também é frágil. Qualquer desvio na saída da tradução do que seu parser espera causará uma falha silenciosa ou erro em tempo de execução na sua aplicação.
Com o PolyLingo você envia o objeto como está com format: "json" e recebe de volta uma versão traduzida da estrutura completa para cada idioma alvo em uma única resposta. As chaves permanecem intactas. A aninhamento é preservado. Valores não-string são deixados intactos. A saída cai direto no seu projeto.
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\":\"Home\",\"about\":\"Sobre nós\"}}",
"format": "json",
"targets": ["fr", "de", "es", "ja", "nl"]
}'
Uma requisição. Cinco idiomas. Estrutura intacta.
Conteúdo Markdown
O mesmo padrão se aplica ao Markdown. O endpoint de texto do DeepL não tem conceito de sintaxe Markdown. Envie um post de blog e ele processará tudo como uma string. Títulos podem sobreviver. Blocos de código quase certamente não, pois o conteúdo dentro deles provavelmente será tratado como texto traduzível. A sintaxe de links pode ser bagunçada, particularmente em torno da pontuação nas bordas do texto do link.
A flag de formato markdown do PolyLingo instrui o modelo a tratar a sintaxe Markdown como estrutural e não traduzível. Títulos permanecem títulos. Blocos de código cercados são deixados verbatim. URLs de links não são alteradas. Apenas o conteúdo da prosa muda.
Para um site de documentação ou um blog com conteúdo técnico, a diferença é significativa. Um bloco de código corrompido em um tutorial não é um problema menor de apresentação, é um tutorial quebrado.
A diferença entre uma requisição e uma por idioma
Vale a pena refletir sobre isso porque as implicações de custo são reais.
A API do DeepL aceita apenas um idioma alvo por requisição. Para traduzir um conteúdo para dez idiomas você faz dez chamadas API. Para um site grande ou um CMS com publicações frequentes, isso é dez vezes a sobrecarga de requisição, dez vezes a latência para gerenciar e dez vezes os pontos de falha.
O PolyLingo aceita um array de códigos de idiomas alvo e retorna todas as traduções em uma única resposta. Trinta e seis idiomas é uma requisição, não trinta e seis.
Para projetos pequenos a diferença é gerenciável. Para qualquer coisa em escala, muda a arquitetura de como você constrói seu pipeline de tradução.
Modelo de preços
O DeepL cobra por caractere. O plano API Free permite até 500.000 caracteres por mês, e planos pagos cobram pelo consumo de caracteres. Como você faz uma requisição por idioma, a contagem de caracteres para um conteúdo é multiplicada pelo número de idiomas alvo para os quais você está enviando em requisições separadas.
O PolyLingo cobra por token e conta o total combinado de entrada e saída para todos os idiomas em uma única requisição. A cobrança é transparente e previsível: o nível gratuito inclui 50.000 tokens por mês, com planos pagos a partir de $9 por mês para 600.000 tokens.
Os dois modelos não são diretamente comparáveis em custo por palavra porque usam unidades diferentes, mas a arquitetura de uma requisição para todos os idiomas do PolyLingo significa que você não multiplica linearmente sua contagem de requisições pelo número de idiomas alvo.
Onde cada um se encaixa
A API do DeepL é a escolha certa quando:
- Seu conteúdo é prosa simples sem requisitos estruturais
- A qualidade da tradução para texto legível por humanos é a principal preocupação
- Você está traduzindo para um pequeno número de idiomas e o volume de requisições é baixo
- Você já está investido no ecossistema DeepL e usa seu glossário ou recursos de formalidade
- Você precisa de suporte para um idioma fora dos 36 atuais do PolyLingo (DeepL suporta mais de 100 idiomas)
O PolyLingo é a escolha certa quando:
- Seu conteúdo é JSON, Markdown ou HTML e a estrutura deve ser preservada
- Você precisa traduzir para múltiplos idiomas em uma única chamada API
- Você está construindo uma integração CMS ou pipeline i18n onde a eficiência das requisições importa
- Você quer uma interface consistente para todos os formatos de conteúdo sem soluções específicas para formatos
- Você quer cobrança baseada em tokens com uma cota mensal previsível
Resumo lado a lado
| PolyLingo | DeepL API | |
|---|---|---|
| Suporte nativo a JSON | Sim | Não |
| Suporte nativo a Markdown | Sim | Não |
| Suporte a HTML | Sim | Sim (flag tag_handling) |
| Todos os idiomas em uma requisição | Sim | Não, um idioma por requisição |
| Detecta formato de conteúdo automaticamente | Sim | Não |
| Idiomas suportados | 36 | 100+ |
| Nível gratuito | 50.000 tokens/mês | 500.000 caracteres/mês |
| Unidade de cobrança | Token | Caractere |
| Tradutor web sem código | Sim | Sim (app web) |
O DeepL tem um catálogo maior de idiomas e um histórico mais longo de qualidade em tradução de prosa. O PolyLingo é construído para fluxos de trabalho de conteúdo estruturado onde a integridade do formato é inegociável.
Eles resolvem problemas adjacentes. A escolha certa depende de como seu conteúdo realmente é.
Experimente o PolyLingo
O nível gratuito inclui 50.000 tokens por mês. Não é necessário cartão de crédito. A documentação completa da API está em 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": "# Olá\n\nEste é um conteúdo **estruturado**.",
"format": "markdown",
"targets": ["fr", "de", "es"]
}'