Pular para o conteúdo principal

Como o i18n-rosetta funciona

O i18n-rosetta traduz os arquivos de localização do seu aplicativo com um único comando. Veja o que acontece nos bastidores.

O Pipeline

Quando você executa npx i18n-rosetta sync, o rosetta executa um pipeline de seis estágios:

Principais decisões de design:

  • Detecção de alterações via hashes SHA-256. O Rosetta rastreia cada valor de origem com um hash em .i18n-rosetta.lock. Quando você atualiza uma string em inglês, apenas essa chave é retraduzida. É por isso que sync é rápido em execuções repetidas — ele faz o mínimo de trabalho possível.

  • Cache de Memória de Tradução. Antes de fazer qualquer chamada de API, o rosetta verifica .rosetta/tm.json em busca de traduções em cache (indexadas por texto de origem + localidade + método). Em uma ressincronização típica após alterar uma chave, 142 chaves vêm do cache e 1 chave acessa a API.

  • Quality gate antes da gravação. Cada tradução passa por cinco verificações automatizadas (vazio, eco da origem, loop de alucinação, inflação de tamanho, conformidade de script) antes de tocar nos seus arquivos. As falhas são registradas, nunca aceitas silenciosamente.

  • Cascata de novas tentativas em caso de falha. Se um lote falhar (erro de análise JSON, tempo limite da API), o rosetta tenta novamente com lotes progressivamente menores: completo → metade → individual. Isso isola a chave problemática sem bloquear o restante.

Métodos de Tradução

O Rosetta suporta quatro métodos de tradução, cada um adequado para diferentes cenários:

MétodoComo funcionaMelhor para
llmPrompt estruturado para qualquer modelo do OpenRouterIdiomas com muitos recursos
llm-coachedMesmo prompt + regras gramaticais, dicionário e notas de estiloIdiomas onde os LLMs cometem erros previsíveis
google-translateSolicitação em lote da Google Cloud Translation APIIdiomas com muitos recursos e bom suporte do GT
apiHTTP POST para o seu próprio endpointPipelines personalizados, modelos controlados pela comunidade

Os métodos são configurados por par de idiomas. Você pode usar google-translate para francês, mas llm-coached para Plains Cree — cada par recebe o método que funciona melhor para ele.

Dados de Coaching

Para pares llm-coached, os dados de coaching fornecem ao LLM conhecimento linguístico explícito: regras gramaticais, terminologia forçada e preferências de estilo. Isso é injetado em cada prompt como um contexto estruturado.

coaching/crk.json
{
"grammar_rules": ["Animate nouns take different plural forms than inanimate nouns"],
"dictionary": {"welcome": "ᑕᓂᓯ", "settings": "ᐃᑕᐢᑌᐘᐃᓇ"},
"style_notes": "Use Standard Roman Orthography (SRO) unless explicitly configured otherwise."
}

Os dados de coaching são o principal mecanismo para melhorar a qualidade da tradução sem fazer o fine-tuning de um modelo. Altere as regras → execute a sincronização novamente → veja se ajuda. A iteração é instantânea.

Plugins

Os plugins são receitas de tradução pré-empacotadas para pares de idiomas específicos. Eles são manifestos JSON — não código — que dizem ao rosetta qual método usar, com quais configurações e qual qualidade foi avaliada em benchmark.

i18n-rosetta plugin install ./crk-coached-v3/
i18n-rosetta sync # uses the installed plugin for en→crk

Os plugins preenchem a lacuna entre a pesquisa e a produção: um método que tem uma boa pontuação no MT Eval Arena pode ser empacotado como um plugin e implantado aqui.

O Panorama Geral

O i18n-rosetta é uma metade de um ecossistema de duas partes:

  • MT Eval Arena — onde os métodos de tradução são desenvolvidos e comprovados com benchmarking reprodutível
  • i18n-rosetta — onde os métodos comprovados são implantados para traduzir conteúdo real

O Eval Harness Bridge conecta os dois. Um método que se prova na Arena é implantado aqui. O feedback dos falantes na produção melhora a próxima versão.


Aprofunde-se