champollion
Um framework de internacionalização totalmente customizável. Um comando traduz seus arquivos de locale. Uma config controla cada método, modelo e par de idiomas. E se os métodos built-in não forem suficientes — construa o seu, prove que funciona e implante.
npx champollion sync
champollion detecta automaticamente seus arquivos de locale, formato e idiomas de destino. Traduz o que falta, pula o que está pronto, valida cada resultado e escreve uma saída limpa. Esse é o ponto de partida.
Por Que Não Apenas Escrever um Script?
Você poderia escrever um loop rápido que chama Google Translate em cada chave. A maioria dos desenvolvedores faz — leva cerca de 30 linhas. Aqui está onde quebra:
- Sem detecção de mudanças. Atualize uma string em inglês — a tradução fica obsoleta para sempre. champollion rastreia cada valor de origem com hashes SHA-256 e retraduz apenas o que mudou.
- Sem batching. Uma chamada de API por chave significa 200 chaves = 200 round trips. champollion faz batching inteligente (configurável, padrão 80 chaves/batch para LLM, 128 para Google).
- Sem cache. Cada sync retraduz tudo. A Translation Memory do champollion cacheia traduções por texto de origem + locale + método — executar sync novamente após uma mudança de chave traduz apenas essa chave, não o arquivo inteiro.
- Sem quality gate. Tradução automática alucina, ecoa a origem ou produz em script errado. champollion valida cada tradução antes de escrever — script errado, inflação de comprimento e ecos de origem são detectados e rejeitados.
- Sem awareness de formato. Hardcoded para JSON? champollion lida com JSON, TOML, YAML e Hugo Markdown (frontmatter + body) com auto-detecção.
- Sem controle de método. Cada par recebe o mesmo método. champollion permite usar Google Translate para francês, um LLM para japonês e um pipeline customizado hospedado pela comunidade para Cree — no mesmo arquivo de config.
champollion é a versão de produção daquele script.
O Que Torna Diferente
Cada método é um plugin
O método de tradução é configurável por par de idiomas. Misture Google Translate, LLMs, prompts coached e APIs customizadas no mesmo projeto:
{
"version": 3,
"pairs": {
"en:fr": { "method": "google-translate" },
"en:ja": { "method": "llm", "model": "google/gemini-2.5-pro" },
"en:crk": { "methodPlugin": "crk-coached-v1" }
}
}
Francês recebe Google Translate (rápido, barato). Japonês recebe um LLM premium (nuançado). Plains Cree recebe um plugin coached com regras gramaticais, dicionários e validação morfológica. Mesmo comando sync. Mesmo quality gate. Mesmo CLI.
Prove
Acha que seu método consegue traduzir inglês para espanhol? Turco para azerbaijano? Inglês para Cree?
Prove. O eval harness companion faz benchmark de qualquer método de tradução com scoring reproduzível e fingerprinted. O leaderboard rastreia cada submissão.
O eval harness e o CLI de produção compartilham a mesma interface de plugin. Um método que pontua bem no harness pode ser usado em produção — se a comunidade cujo idioma ele serve der consentimento. Para idiomas indígenas e de baixo recurso, esse consentimento importa. Veja Data Sovereignty.
# Benchmark your method (in the eval harness repo)
cd arena
python eval/baseline_experiment.py --dataset data/edtekla-dev-v1.json --submit
# Use it locally
npx champollion sync
Mesmo plugin. Plug and test.
O toolkit completo
champollion não é apenas sync. É um pipeline i18n completo:
| Comando | O Que Faz |
|---|---|
sync | Traduzir chaves faltantes e obsoletas (com verificação pós-sync) |
watch | Auto-sync quando seu arquivo de origem muda |
lint | Escanear código-fonte para strings hardcoded |
wrap | Auto-wrap strings hardcoded em chamadas t() |
audit | Listar todos os marcadores de fallback [EN] de execuções anteriores |
verify | Verificar que traduções estão presentes e corretas (CI gate) |
integrity | Detectar corrupção de placeholder, problemas de encoding e completude de plural ICU |
seo | Gerar tags hreflang, sitemaps e schema JSON-LD |
status | Mostrar config de pair, plugins e benchmark scores |
provenance | Auditar licenciamento de recursos de tradução |
plugin | Instalar, remover e listar plugins de método |
fonts | Baixar web fonts para conversores de script PUA |
tm | Gerenciar cache de Translation Memory (stats, clear, per-locale) |
xliff | Exportar/importar XLIFF 1.2 para revisão de tradutor profissional |
Quatro desses — lint, sync, verify, audit — formam um pipeline CI que detecta strings hardcoded, traduz-as, verifica correção e falha a build se alguma locale estiver incompleta.
A Arena
O Method Leaderboard é o placar. Cada submissão é fingerprinted para um commit Git, versionada para um dataset específico e pontuada pelo mesmo harness. Qualquer um pode submeter.
O que você consegue provar? O harness recebe JSON. Plugins recebem JSON. Qualquer método que produz JSON pode ser testado:
| Abordagem | Exemplo |
|---|---|
| LLM Coached | Injete regras gramaticais e dicionários no prompt de um modelo frontier |
| Modelo Fine-tuned | Treine um modelo aberto em texto paralelo — apenas não nos dados de eval |
| Pipeline FST-gated | LLM gera → transdutor de estado finito valida morfologia → retry |
| Modelos Encadeados | Modelo A esboça → Modelo B pós-edita → Modelo C pontua |
| Dicionário + LLM | Force termos conhecidos de um dicionário, deixe o LLM lidar com o resto |
| Evolutivo | Gere candidatos, pontue-os, mute os melhores, repita |
| Tradução Parcial | Traduza uma amostra manualmente, prove que seu LLM corresponde, auto-traduza o resto |
Fine-tune modelos. Implante algoritmos evolutivos. Teste respostas de alunos em exames de idioma. Construa tabelas de lookup. Encadeie três modelos juntos. Contanto que seu método produza JSON, o harness o pontua e o framework o executa.
:::danger A única regra Não treine nos dados de avaliação. Métodos expostos ao dataset de benchmark serão desqualificados. Fine-tune no que quiser. Apenas não no test set. :::
Este é um convite aberto. Se você trabalha com um idioma de baixo recurso — como pesquisador, membro da comunidade, estudante ou apenas alguém que se importa — construa um método, execute o harness e reivindique o top score. O problema está não resolvido. A infraestrutura está aqui.
Próximos Passos
Começando:
- Installation — Configure em 2 minutos
- Quick Start — Execute seu primeiro sync
- Supported Languages — O que está disponível out of the box
Customizando sua setup:
- Translation Methods — Escolha o método certo por pair
- Translation Memory — Como caching economiza seu dinheiro
- Configuration — Referência completa de config
- Hugo Multilingual Site — Tradução de conteúdo Markdown
Indo mais fundo:
- Working with Professional Translators — Workflow de export/import XLIFF
- Data Sovereignty — Princípios OCAP, CARE e Māori Data Sovereignty
- Support a Low-Resource Language — O desafio que começou tudo
- Cookbook: FST-Gated Pipeline — Construa um pipeline de decomposição
- MT Evaluation — Como o harness e leaderboard funcionam
- Method Leaderboard — Scores ao vivo e submissões