Ir para o conteúdo principal

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:

champollion.config.json
{
"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:

ComandoO Que Faz
syncTraduzir chaves faltantes e obsoletas (com verificação pós-sync)
watchAuto-sync quando seu arquivo de origem muda
lintEscanear código-fonte para strings hardcoded
wrapAuto-wrap strings hardcoded em chamadas t()
auditListar todos os marcadores de fallback [EN] de execuções anteriores
verifyVerificar que traduções estão presentes e corretas (CI gate)
integrityDetectar corrupção de placeholder, problemas de encoding e completude de plural ICU
seoGerar tags hreflang, sitemaps e schema JSON-LD
statusMostrar config de pair, plugins e benchmark scores
provenanceAuditar licenciamento de recursos de tradução
pluginInstalar, remover e listar plugins de método
fontsBaixar web fonts para conversores de script PUA
tmGerenciar cache de Translation Memory (stats, clear, per-locale)
xliffExportar/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:

AbordagemExemplo
LLM CoachedInjete regras gramaticais e dicionários no prompt de um modelo frontier
Modelo Fine-tunedTreine um modelo aberto em texto paralelo — apenas não nos dados de eval
Pipeline FST-gatedLLM gera → transdutor de estado finito valida morfologia → retry
Modelos EncadeadosModelo A esboça → Modelo B pós-edita → Modelo C pontua
Dicionário + LLMForce termos conhecidos de um dicionário, deixe o LLM lidar com o resto
EvolutivoGere candidatos, pontue-os, mute os melhores, repita
Tradução ParcialTraduza 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.

→ Ver o leaderboard


Próximos Passos

Começando:

Customizando sua setup:

Indo mais fundo: