Zum Hauptinhalt springen

Cookbook: 30 Sprachen übersetzen

Skalieren Sie ein Projekt von einer Handvoll Lokalisierungen zu globaler Abdeckung. Dieses Cookbook führt Sie durch die Methodenauswahl, Kostenoptimierung und CI-Integration für eine reale mehrsprachige Bereitstellung.

Szenario: Sie haben eine SaaS-App mit en, fr, es. Sie müssen 27 weitere Sprachen über drei Stufen von Qualitätsanforderungen hinweg hinzufügen.


Schritt 1: Kategorisieren Sie Ihre Sprachen

Nicht alle 30 Sprachen benötigen denselben Ansatz. Gruppieren Sie diese nach der Qualität der verfügbaren Methode:

StufeSprachenMethodeWarum
Stufe 1 — Premiumja, ko, zh, de, ptllm (GPT-4o)Hochwertige Märkte, nuancierte Grammatik
Stufe 2 — Standardit, nl, pl, sv, da, fi, no, cs, ro, hu, el, tr, id, ms, th, vi, uk, bggoogle-translateHohes Volumen, gut von Google unterstützt
Stufe 3 — Coachedcrk, oj, mi, hawllm-coached + PluginsRessourcenarm, erfordern Durchsetzung von Terminologie

Schritt 2: Pro Sprachpaar konfigurieren

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" }
}
}

Hinweis: Sprachen, die nicht in pairs aufgeführt sind, erben defaultMethod: "google-translate". Sie müssen nicht alle 30 auflisten.

Info

Die Unterstützung für crk befindet sich in der Entwicklung — siehe Unterstützung einer ressourcenarmen Sprache für den Status und Richtlinien zur Mitwirkung.

Schritt 3: API-Schlüssel einrichten

Sie benötigen beide API-Schlüssel für diese Konfiguration:

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

Schritt 4: Zuerst ein Testlauf

Führen Sie immer eine Vorschau durch, bevor Sie 30 Sprachen übersetzen:

npx i18n-rosetta sync --dry

Überprüfen Sie die Ausgabe. Sie wird Folgendes anzeigen:

  • Welche Paare welche Methode verwenden
  • Wie viele Schlüssel pro Lokalisierung neu oder geändert sind
  • Geschätzte API-Aufrufe pro Stufe

Schritt 5: Führen Sie die Synchronisierung aus

npx i18n-rosetta sync

Rosetta verarbeitet jedes Paar unabhängig. Die Paare der Stufe 2, die Google Translate verwenden, werden schnell sein. LLM-Paare der Stufe 1 werden langsamer sein, bieten aber eine höhere Qualität. Die gecoachten Paare der Stufe 3 verwenden die Coaching-Daten des Plugins.

Inkrementelle Aktualisierungen

Nach der anfänglichen Synchronisierung übersetzen nachfolgende Durchläufe nur geänderte oder neue Schlüssel:

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

Die Sperrdatei (.i18n-rosetta.lock) verfolgt, was übersetzt wurde, sodass Sie stabile Inhalte niemals neu übersetzen.

Schritt 6: Qualität prüfen

Überprüfen Sie den Status aller Sprachpaare:

npx i18n-rosetta status

Dies gibt eine Tabelle aus, die die Methode, das Modell, die Qualitätsstufe jedes Paares anzeigt und ob Coaching-Daten oder Benchmark-Werte verfügbar sind.

Schritt 7: CI-Integration

Fügen Sie dies Ihrem GitHub Actions-Workflow hinzu, damit die Übersetzungen bei jedem Push aktuell bleiben:

.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

Kostenschätzung

Für ein Projekt mit 500 Quellschlüsseln in 30 Sprachen:

StufeSprachenMethodeUngefähre Kosten
Stufe 1 (5 Sprachen)ja, ko, zh, de, ptGPT-4o~$2.50/vollständige Synchronisierung
Stufe 2 (18 Sprachen)it, nl, pl, etc.Google Translate~$0.90/vollständige Synchronisierung
Stufe 3 (4 Sprachen)crk, oj, mi, hawGPT-4o-mini coached~$0.40/vollständige Synchronisierung
Gesamt30 SprachenGemischt~$3.80/vollständige Synchronisierung

Inkrementelle Synchronisierungen (5–20 geänderte Schlüssel) kosten nur einen Bruchteil einer vollständigen Synchronisierung.

Siehe auch