Arquitetura
O ecossistema de tradução Rosetta é composto por três ferramentas independentes que trabalham juntas por meio de contratos bem definidos. Nenhuma delas depende das outras em tempo de compilação (build time). Elas se comunicam através de um formato de plugin de método compartilhado e um contrato de API REST.
Os Três Componentes
i18n-rosetta (este projeto)
A ferramenta open-source para desenvolvedores. Traduz arquivos de localidade (locale) usando métodos conectáveis. Zero dependências, configuração opcional, funciona de imediato (out of the box).
Métodos integrados:
llm→ OpenRouter / qualquer LLM (mais de 200 modelos)llm-coached→ LLM + orientação (coaching) de gramática/dicionárioopenai→ API direta da OpenAI (GPT-4o, GPT-4o-mini)anthropic→ API direta da Anthropic (Claude Sonnet, Haiku, Opus)gemini→ API direta do Google Gemini (Flash, Pro — nível gratuito disponível)google-translate→ Google Cloud Translation API v2deepl→ API do DeepL com suporte a glossáriomicrosoft-translator→ Azure Cognitive Services Translatorlibretranslate→ LibreTranslate auto-hospedado (AGPL, gratuito)api→ Conexão leve (thin pipe) para qualquer endpoint REST remoto
Eval Harness (projeto complementar)
Uma ferramenta de pesquisa para desenvolver, testar e realizar benchmark de métodos de tradução. Quando um método atinge uma qualidade aceitável, o harness exporta um plugin de método — um manifesto method.json e arquivos de dados de orientação opcionais.
O harness nunca é executado dentro do rosetta. É uma ferramenta separada que produz saídas estáticas (arquivos JSON). O Rosetta apenas lê esses arquivos.
Rosetta Translate (planejado)
Um serviço de API tarifado (metered) que hospeda métodos de tradução proprietários no lado do servidor — os prompts, dados de orientação e pipelines linguísticos nunca saem do servidor.
Como Eles se Conectam
Eval Harness → i18n-rosetta (exportação unidirecional)
Contrato: Especificação do Plugin
Rosetta Translate → i18n-rosetta (API em tempo de execução)
O APIMethod do Rosetta é um canal passivo (dumb pipe). Ele envia chaves e recebe traduções de volta. Ele contém zero lógica de tradução e zero conteúdo proprietário.
O Que Cada Componente Sabe Sobre os Outros
| Ferramenta | Conhece o rosetta? | Conhece o Rosetta Translate? | Conhece o harness? |
|---|---|---|---|
| i18n-rosetta | (é o rosetta) | Sim — o método api o chama | Não — apenas lê as exportações de plugins |
| Rosetta Translate | Sim — atende às suas requisições | (é o Rosetta Translate) | Não — recebe métodos implantados |
| Eval Harness | Sim — exporta o formato de plugin | Não — métodos implantados separadamente | (é o harness) |
Cenários de Usuário
Cenário 1: Gratuito, zero configuração (maioria dos usuários)
export OPENROUTER_API_KEY=sk-...
npx i18n-rosetta sync
Usa o método llm integrado. Sem plugins, sem Rosetta Translate, sem harness.
Cenário 2: Baseline do Google Translate
export GOOGLE_TRANSLATE_API_KEY=AIza...
npx i18n-rosetta sync
Usa o método google-translate integrado. Não são necessários plugins.
Cenário 3: Plugin aberto com orientação embutida
rosetta plugin install ./french-formal-v1/
rosetta sync
O plugin tem type: "llm-coached" → o rosetta usa a própria chave do OpenRouter do usuário. Os dados de orientação são locais (sem chamada ao servidor).
Cenário 4: Orientação DIY (sem plugin, sem harness)
{
"pairs": {
"en:fr": { "method": "llm-coached" }
}
}
O usuário mantém suas próprias regras gramaticais e dicionário em .rosetta/coaching/fr.json.
Language Cards
Cada idioma no rosetta é configurado através de um Language Card — um arquivo JSON contendo predefinições de registro, regras de formalidade, flags de suporte a métodos e convenções tipográficas. Os Language Cards são a configuração por idioma que orienta a tradução baseada em registro (register-steered translation).
Os cards são divididos em duas camadas (tiers) para desempenho em escala (visando mais de 700 idiomas):
- Camada de tempo de execução (Runtime tier) (
language-cards/): Carregada antecipadamente (eagerly) — os campos que o mecanismo de tradução precisa (registros, formalidade, suporte a métodos, regras tipográficas). - Camada de referência (Reference tier) (
language-reference/): Carregada sob demanda (lazily) — documentação para desenvolvedores (desafios linguísticos, família de idiomas, recursos de PNL).
Ambas as camadas são geradas a partir de fontes confiáveis (IANA, CLDR, Glottolog) usando scripts/generate-language-card.mjs e, em seguida, curadas por humanos para precisão linguística.
Princípios de Design
- Sem dependências circulares. As pontes são unidirecionais.
- O Rosetta é o núcleo leve. Zero dependências, configuração opcional. Plugins e API são aditivos.
- A proteção de IP é arquitetural. Técnicas proprietárias permanecem no lado do servidor. O pacote npm não envia nada proprietário.
- O formato do plugin é o contrato. Tudo flui através de
method.json. - Cada ferramenta tem uma função. Harness → desenvolver métodos. Rosetta Translate → hospedar métodos. Rosetta → traduzir arquivos.
Veja Também
- Métodos de Tradução — como cada método integrado funciona
- Especificação do Plugin — o formato do manifesto method.json
- Eval Harness — a ferramenta de pesquisa complementar
- Servindo um Método via API — hospedagem de pipelines de tradução personalizados
- Suporte a um Idioma com Poucos Recursos — o caso de uso que impulsionou esta arquitetura