O que é o LibreTranslate
O LibreTranslate é uma API de tradução automática gratuita e open source que você instala no seu próprio servidor. Ele faz o mesmo trabalho básico do Google Translate ou do DeepL, mas sem mandar seus textos para nenhuma empresa e sem cobrar por caractere traduzido.
O projeto foi criado por Piero Toffanin no final de 2020 e é mantido pela comunidade sob licença AGPL-3.0. Ele nasceu para resolver um problema simples: toda API de tradução comercial exige cartão de crédito, tem limite de uso e envia dados sensíveis para fora da sua infraestrutura.
Nesta semana o repositório voltou ao GitHub Trending, e não é por acaso. Com a pressão da LGPD sobre dados de usuários e o custo crescente de APIs de tradução em escala, cada vez mais times estão procurando uma alternativa que rode dentro da própria rede. O LibreTranslate já passou de 16 mil estrelas no GitHub.
Como funciona
Por baixo do capo, o LibreTranslate é um servidor Flask em Python que expõe endpoints REST. Quem faz a tradução de verdade é a biblioteca Argos Translate, também open source, que usa modelos de tradução neural rodando localmente via CTranslate2.
Cada par de idiomas é um pacote de modelo separado. Quando você sobe o servidor pela primeira vez, ele baixa os modelos dos idiomas que você pediu. Depois disso, tudo roda offline: o texto entra na API, passa pelo modelo neural e volta traduzido sem nenhuma chamada externa.
Uma analogia útil: pense no LibreTranslate como um garçom (a API HTTP) e no Argos Translate como a cozinha (os modelos). Você fala com o garçom em JSON, ele leva o pedido para a cozinha, e a cozinha nunca precisa sair do prédio.
A API do LibreTranslate é compatível com o formato da API do Google Translate em vários clientes. Muitas bibliotecas que já falam com o Google só precisam trocar a URL base.
Principais recursos
O LibreTranslate é enxuto de propósito, mas cobre o que a maioria dos projetos precisa em tradução:
- Tradução de texto via POST /translate, com detecção automática do idioma de origem.
- Detecção de idioma via POST /detect, retornando idioma e nível de confiança.
- Tradução de arquivos (txt, odt, docx e outros formatos de documento) via POST /translate_file.
- Suporte a HTML: ao enviar format igual a html, as tags são preservadas e só o texto é traduzido.
- Chaves de API e rate limit nativos, para controlar quem usa sua instância.
- Interface web embutida, útil para testar sem escrever código.
O diferencial em relação ao mercado está em três pontos: custo zero por caractere, privacidade total dos dados e funcionamento offline. Nenhuma API comercial entrega os três ao mesmo tempo.
Ele também suporta dezenas de idiomas, incluindo português, inglês, espanhol, francês, alemão, italiano, japonês, chinês e russo. A lista completa vem do endpoint GET /languages da sua própria instância.
Como começar: instalação passo a passo
Existem dois caminhos principais: pip ou Docker. Para testar rápido, o pip é suficiente. Para produção, prefira Docker.
Passo 1 (via pip): você precisa de Python 3.8 ou superior. Instale e suba o servidor:
pip install libretranslate
libretranslate --load-only pt,en,esNa primeira execução ele baixa os modelos dos idiomas informados em --load-only. Sem essa flag, ele tenta baixar todos os idiomas, o que consome vários gigabytes.
Passo 2 (via Docker): a imagem oficial já vem pronta. Um único comando sobe o serviço na porta 5000:
Docker run -d --name libretranslate \
-p 127.0.0.1:5000:5000 \
-e LT_LOAD_ONLY=pt,en,es \
libretranslate/libretranslatePasso 3: abra http://localhost:5000 no navegador. A interface web já permite traduzir texto e ver a documentação Swagger da API em /docs.
Os modelos ficam em memória. Cada par de idiomas consome centenas de megabytes de RAM. Com 3 ou 4 idiomas, reserve pelo menos 2 GB para o container.
Exemplo prático
Vamos montar um cenário real: um sistema em Python que recebe descrições de produtos em inglês e precisa exibir em português no site brasileiro. Com o servidor rodando localmente, a chamada é uma requisição HTTP simples.
import requests
resp = requests.post('http://localhost:5000/translate', json={
'q': 'Wireless noise-cancelling headphones with 30-hour battery',
'source': 'en',
'target': 'pt',
'format': 'text'
})
print(resp.json()['translatedText'])A resposta é um JSON com o campo translatedText. Se você passar source igual a auto, o servidor detecta o idioma de origem sozinho e devolve também o campo detectedLanguage com a confiança.
Para conteúdo HTML, como uma descrição com negrito e listas, troque format para html. As tags são mantidas intactas e só o texto visível é traduzido, o que evita quebrar o layout da página.
Se você ativou chaves de API com a flag --api-keys, basta incluir o campo api_key no corpo da requisição. Sem chave, a instância aplica o rate limit padrão por IP.
Comparação com alternativas
As alternativas mais comuns são as APIs comerciais (Google Cloud Translation, DeepL, Azure Translator) e os modelos de linguagem grandes (LLMs) usados como tradutores.
- Google e DeepL: qualidade superior, especialmente em textos longos e com nuance. Cobram por caractere e enviam seus dados para a nuvem deles.
- LLMs (GPT, Claude, Gemini): excelentes em contexto e tom, mas caros em volume, mais lentos e também dependem de nuvem externa.
- Argos Translate direto: é a mesma engine do LibreTranslate, mas como biblioteca Python, sem API HTTP nem interface.
- LibreTranslate: qualidade boa para textos técnicos e curtos, custo zero, offline e com API pronta.
Regra prática: se o texto vai para um cliente final em conteúdo de marketing, uma API comercial ou um LLM tende a soar mais natural. Se o volume é alto, os dados são sensíveis ou você precisa de tradução em ambiente sem internet, o LibreTranslate ganha fácil.
O ponto forte único dele é ser a única opção da lista que combina API REST pronta, self-hosted e licença livre. Você não fica preso a fornecedor nenhum.
Pontos positivos e limitações
Positivos: instalação em minutos, sem custo por uso, privacidade total, funciona offline, tem Docker oficial, suporta arquivos e HTML e vem com controle de acesso por chave.
Limitações reais: a qualidade da tradução fica abaixo do DeepL e dos LLMs em textos longos, gírias e frases ambíguas. Os modelos de português são razoáveis, mas você vai notar construções literais em frases mais complexas.
Outro ponto: cada par de idiomas é um modelo separado. Traduzir de alemão para português, por exemplo, pode passar pelo inglês como idioma intermediário, o que perde um pouco de precisão. E o consumo de RAM cresce com o número de idiomas carregados.
Nunca exponha a porta 5000 direto na internet sem chave de API e rate limit. Um bot pode derrubar sua instância com requisições em massa em minutos.
Casos de uso reais
Dev de SaaS com usuários em vários países: traduz textos gerados por usuários (comentários, avaliações, tickets) em tempo real sem pagar por caractere e sem enviar dados de cliente para terceiros.
Time de dados que processa documentos: traduz milhares de PDFs, contratos ou artigos em lote dentro da própria rede, atendendo requisitos de compliance e LGPD.
Empresa com ambiente isolado: fábricas, hospitais ou órgãos públicos que não podem acessar APIs externas e precisam de tradução local em sistemas internos.
Estudante ou dev solo: quer adicionar tradução em um projeto pessoal ou TCC sem gastar nada e sem criar conta em nuvem. Sobe com um pip install e pronto.
Dicas e boas práticas
Use sempre --load-only (ou a variável LT_LOAD_ONLY no Docker) listando só os idiomas que você realmente usa. Isso corta o tempo de boot e o consumo de RAM drasticamente.
Coloque um cache na frente da API (Redis ou até um dicionário em memória) indexado por hash do texto e par de idiomas. Textos repetidos, como descrições de catálogo, viram resposta instantânea.
Erro comum de iniciante: mandar textos gigantes em uma única requisição. Quebre em parágrafos ou frases. O modelo trabalha melhor e o tempo de resposta fica previsível.
Em produção, rode o container atrás do NGINX escutando só em 127.0.0.1, ative --api-keys e configure --req-limit. Assim você controla quem usa e quanto usa.
Uma última prática: a instância pública em libretranslate.com exige chave de API paga. Ela serve para testar, mas o projeto foi feito para você hospedar o seu. Não construa nada dependendo da instância pública gratuita.
Vale a pena?
Sim para quem precisa traduzir volume alto, lida com dados sensíveis, trabalha em ambiente sem internet ou simplesmente não quer pagar por caractere. Para textos técnicos, interfaces e conteúdo gerado por usuário, a qualidade é mais que suficiente.
Não para quem precisa de tradução literária ou de marketing com tom refinado. Nesses casos, DeepL ou um LLM entregam resultado mais natural, mesmo custando mais.
Próximo passo sugerido: suba o container com pt e en, mande três frases do seu próprio produto pelo /translate e compare com o Google Translate. Em cinco minutos você vai saber se a qualidade atende o seu caso.
Comentários