Zum Inhalt springen
Sonenta

Anleitung · Migration

Von i18next migrieren

Sie sind bereits mit i18next in Produktion? @sonenta/react-i18next ist ein Drop-in-Ersatz für react-i18next — dieselbe useTranslation()- und t()-API: Sie tauschen einfach den Provider aus und Ihre Übersetzungen kommen live vom CDN. Bringen Sie Ihre bestehenden locales/-Dateien mit einem einzigen Befehl in Sonenta und lassen Sie dann Ihren Code unverändert. Der Import erstellt die fehlenden Schlüssel, aktualisiert jede Übersetzung und ist vollständig idempotent: Sie können ihn ohne Bedenken aus der CI erneut ausführen. Hier ist der vollständige Pfad: installieren, importieren, veröffentlichen, verifizieren, das SDK anbinden.

Bevor Sie beginnen

Drei Dinge, dann sind Sie bereit zum Importieren:

1. Installieren und initialisieren

Installieren Sie die CLI global, generieren Sie eine Konfiguration, die auf Ihr Projekt zeigt, und exportieren Sie Ihren Schlüssel.

terminal
1# one global install — gives you the `sonenta` command (Node >= 18)2npm i -g @sonenta/cli 4# scaffold sonenta.config.json and point it at your project5sonenta init --project <project_uuid> 7# the CLI talks to the MCP surface — use an mcp:* scoped key8export SONENTA_TOKEN=snt_live_<prefix>.<secret>

sonenta init schreibt eine sonenta.config.json, die Sie committen können. In der CI überspringen Sie init und übergeben --project sowie die Umgebungsvariable SONENTA_TOKEN. sonenta und SONENTA_* sind kanonisch; der alte Befehl sonenta und die Variablen SONENTA_* funktionieren während des Übergangs noch.

2. Vorschau, dann importieren

Der Importer liest den Pfad jeder Datei, um deren Sprache und Namespace abzuleiten: ein konventioneller locales/-Baum benötigt keine Optionen. Führen Sie zuerst einen Dry-Run durch, um den Plan zu sehen, und entfernen Sie dann --dry-run, um ihn anzuwenden.

your repo
1# the importer infers (language, namespace) from each path:2#   <lang>/<namespace>.json3locales/4├─ en/5│  ├─ common.json     → language en · namespace common6│  └─ checkout.json   → language en · namespace checkout7└─ fr/8   ├─ common.json     → language fr · namespace common9   └─ checkout.json   → language fr · namespace checkout
terminal
1# preview first — no writes, prints exactly what WOULD change2sonenta import "./locales/**/*.json" --dry-run 4# the real run — idempotent, safe to repeat5sonenta import "./locales/**/*.json" 7✓ common · checkout   (en, fr)8  keys           312 created · 0 reused9  translations   624 created · 0 updated · 0 unchanged10  errors 0 · glossary 0 violations 12# non-standard layout? override the inference per file:13sonenta import strings.fr.json --language fr --namespace common

Bäume können verschachtelt oder flach sein — beide werden identisch importiert. --status legt den eingehenden Status fest (draft oder translated, Standard translated); --version zielt auf eine nicht standardmäßige Version. Pluralformen, die als CLDR-Dictionary ({ one, other }) ausgedrückt sind, werden automatisch als Pluralformen gespeichert.

3. Auf dem CDN veröffentlichen

Der Import füllt das Projekt; die Veröffentlichung macht es auslieferbar. Erstellen Sie ein Release, und die Bundles verbreiten sich auf dem globalen CDN, von dem das SDK liest.

terminal
1# cut a CDN release so the SDK and your build can fetch it2sonenta releases publish 4→ released "main" · propagating to cdn.sonenta.com

Releases sind unveränderliche Snapshots einer Version. Veröffentlichen Sie erneut, sobald Sie neue Inhalte importieren — sowohl das SDK als auch Ihr statischer Build holen sich das neueste Release.

4. Das Bundle verifizieren

Bestätigen Sie, dass der Inhalt live ist. Ein veröffentlichtes Bundle ist eine einfache, öffentliche JSON-Datei pro Sprache und Namespace — holen Sie eine direkt ab oder öffnen Sie das Projekt im Dashboard.

terminal
1# the published bundle is public — no auth needed2curl -s https://cdn.sonenta.com/p/<project_uuid>/main/latest/fr/common.json

Ein 404 bei einer Sprache? Sie gehört noch nicht zu den Sprachen des Projekts, oder das Release hat sich noch nicht verbreitet — warten Sie ein paar Sekunden und versuchen Sie es erneut.

5. Ihr SDK auf Sonenta ausrichten

Tauschen Sie Ihr i18next-Backend gegen den Sonenta-Provider aus. Ihre t()-Aufrufe, Ihre Schlüssel und Ihre Namespaces bleiben identisch — die Übersetzungen kommen jetzt aus dem CDN-Bundle, das Sie gerade veröffentlicht haben.

main.tsx
1// src/main.tsx — point @sonenta/react-i18next at the same project2import { SonentaProvider } from "@sonenta/react-i18next"; 4<SonentaProvider5  projectUuid="<project_uuid>"6  token={import.meta.env.VITE_SONENTA_TOKEN}7  defaultLocale="fr"8  namespaces={["common", "checkout"]}9>10  <App />11</SonentaProvider>

Schlüssel, die Punkte enthalten (eine Version, ein Preis, eine Bibelstelle)? Setzen Sie keySeparator={false} und stellen Sie das Projekt auf flach um — siehe die Anleitung Flache oder verschachtelte Schlüssel. Andernfalls funktioniert der verschachtelte Standard ohne Weiteres.

Jederzeit erneut ausführbar

sonenta import ist idempotent: Das erneute Importieren identischer Inhalte ändert nichts (0 erstellt, 0 aktualisiert, N unverändert). Binden Sie es in die CI ein, um Sonenta mit Ihrem Repository synchron zu halten — es erstellt nur, was fehlt, und aktualisiert nur, was sich tatsächlich geändert hat.

Was der Importer übernimmt

Weiter