Pular para o conteúdo principal

Cookbook: Traduzir 30 Idiomas

Escale um projeto de algumas poucas localidades para uma cobertura global. Este cookbook detalha a seleção de métodos, otimização de custos e integração contínua (CI) para uma implantação multilíngue real.

Cenário: Você tem um aplicativo SaaS com en, fr, es. Você precisa adicionar mais 27 idiomas em três níveis de requisitos de qualidade.


Passo 1: Categorize Seus Idiomas

Nem todos os 30 idiomas precisam da mesma abordagem. Agrupe-os pela qualidade do método disponível:

NívelIdiomasMétodoMotivo
Nível 1 — Premiumja, ko, zh, de, ptllm (GPT-4o)Mercados de alto valor, gramática com nuances
Nível 2 — Padrãoit, nl, pl, sv, da, fi, no, cs, ro, hu, el, tr, id, ms, th, vi, uk, bggoogle-translateAlto volume, bem suportado pelo Google
Nível 3 — Treinadocrk, oj, mi, hawllm-coached + pluginsPoucos recursos, requer aplicação de terminologia

Passo 2: Configurar por Par

i18n-rosetta.config.json
{
"version": 3,
"inputLocale": "en",
"localesDir": "./locales",
"defaultMethod": "google-translate",
"model": "google/gemini-3.5-flash",
"languages": {
"ja": { "name": "Japanese", "register": "Polite/formal" },
"ko": { "name": "Korean", "register": "Formal" },
"zh": { "name": "Simplified Chinese", "register": "Neutral" },
"de": { "name": "German", "register": "Formal (Sie)" },
"pt": { "name": "Brazilian Portuguese", "register": "Informal" },
"crk": { "name": "Plains Cree (SRO)", "register": "Neutral" }
},
"pairs": {
"en:ja": { "method": "llm", "model": "openai/gpt-4o" },
"en:ko": { "method": "llm", "model": "openai/gpt-4o" },
"en:zh": { "method": "llm", "model": "openai/gpt-4o" },
"en:de": { "method": "llm", "model": "openai/gpt-4o" },
"en:pt": { "method": "llm", "model": "openai/gpt-4o" },
"en:crk": { "methodPlugin": "crk-coached-v1" }
}
}

Nota: Os idiomas não listados em pairs herdam defaultMethod: "google-translate". Você não precisa listar todos os 30.

informação

O suporte a crk está em desenvolvimento — veja Apoiar um Idioma com Poucos Recursos para o status e diretrizes de contribuição.

Passo 3: Configurar Chaves de API

Você precisará de ambas as chaves de API para esta configuração:

export OPENROUTER_API_KEY="sk-or-v1-..."
export GOOGLE_TRANSLATE_API_KEY="AIza..."

Passo 4: Faça uma Simulação Primeiro

Sempre visualize antes de traduzir 30 idiomas:

npx i18n-rosetta sync --dry

Revise a saída. Ela mostrará:

  • Quais pares usam qual método
  • Quantas chaves são novas/alteradas por localidade
  • Chamadas de API estimadas por nível

Passo 5: Execute a Sincronização

npx i18n-rosetta sync

O Rosetta processa cada par de forma independente. Os pares do Nível 2 usando o Google Translate serão rápidos. Os pares LLM do Nível 1 serão mais lentos, mas com maior qualidade. Os pares treinados do Nível 3 usam os dados de treinamento do plugin.

Atualizações Incrementais

Após a sincronização inicial, as execuções subsequentes traduzem apenas as chaves alteradas ou novas:

# Only keys that changed since last sync
npx i18n-rosetta sync

O lock file (.i18n-rosetta.lock) rastreia o que foi traduzido, para que você nunca retraduza conteúdo estável.

Passo 6: Auditar a Qualidade

Verifique o status de todos os pares de idiomas:

npx i18n-rosetta status

Isso gera uma tabela mostrando o método, modelo, nível de qualidade de cada par e se dados de treinamento ou pontuações de benchmark estão disponíveis.

Passo 7: Integração com CI

Adicione ao seu fluxo de trabalho do GitHub Actions para que as traduções permaneçam atualizadas a cada push:

.github/workflows/i18n-sync.yml
name: Sync Translations
on:
push:
paths:
- 'locales/en/**'

jobs:
translate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20

- run: npm ci

- name: Sync translations
run: npx i18n-rosetta sync
env:
OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY }}
GOOGLE_TRANSLATE_API_KEY: ${{ secrets.GOOGLE_TRANSLATE_API_KEY }}

- name: Commit updated translations
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add locales/
git diff --staged --quiet || git commit -m "chore(i18n): sync translations"
git push

Estimativa de Custos

Para um projeto com 500 chaves de origem em 30 idiomas:

NívelIdiomasMétodoCusto Aproximado
Nível 1 (5 idiomas)ja, ko, zh, de, ptGPT-4o~$2,50/sincronização completa
Nível 2 (18 idiomas)it, nl, pl, etc.Google Translate~$0,90/sincronização completa
Nível 3 (4 idiomas)crk, oj, mi, hawGPT-4o-mini treinado~$0,40/sincronização completa
Total30 idiomasMisto~$3,80/sincronização completa

Sincronizações incrementais (5–20 chaves alteradas) custam uma fração de uma sincronização completa.

Veja Também