Zum Inhalt springen
Sonenta

Schnellstart

React + i18next

Installiere das SDK, packe deine App in <SonentaProvider /> und rufe useTranslation() auf. Fehlende Keys landen automatisch im Dashboard — ohne Zusatzaufwand.

1. Installieren

Eine einzige Abhängigkeit. Kein peer-dep-Akrobatik — das SDK bringt alles React-seitig mit.

terminal
1npm i @sonenta/react-i18next

2. App umschließen

SonentaProvider erwartet eine projectId und einen apiKey. Alles andere hat sinnvolle Defaults: automatische Locale-Erkennung aus dem Browser, Namespaces lazy aus deinem CDN geladen, Missing-Key-Handler debounced und automatisch per POST gesendet.

main.tsx
1// src/main.tsx2import { SonentaProvider } from "@sonenta/react-i18next";3import { createRoot } from "react-dom/client";4import { App } from "./App"; 6createRoot(document.getElementById("root")!).render(7  <SonentaProvider8    projectUuid="proj_xxx"9    token={import.meta.env.VITE_SONENTA_TOKEN}10    defaultLocale="en"11    namespaces={["common"]}12  >13    <App />14  </SonentaProvider>15);
Alle SonentaProvider-Props
Prop Typ Default
projectUuidstring— erforderlich
tokenstring— erforderlich
defaultLocalestringbrowser
defaultNSstring"common"
namespacesstring[]["common"]
cdnUrlstringcdn.sonenta.com
baseUrlstringapi.sonenta.com
missingHandlerEndpointstring/v1/missing
debounceMsnumber5000
transport(batch) => void | Promise<void>internal

3. Hook nutzen

useTranslation() gibt { t, i18n } zurück. Vertraute Form, falls du react-i18next kennst. i18n.ready zeigt an, wann die initialen Namespaces hydriert sind; i18n.changeLanguage() wechselt die Locale zur Laufzeit.

Checkout.tsx
1// src/Checkout.tsx2import { useTranslation } from "@sonenta/react-i18next"; 4export function Checkout() {5  const { t, i18n } = useTranslation("common"); 7  if (!i18n.ready) return null;  // first paint after hydration 9  return (10    <button onClick={() => i18n.changeLanguage("fr")}>11      {t("checkout.review.confirm")}12    </button>13  );14}

Was du gratis bekommst

Eigener Transport (fortgeschritten)

Willst du fehlende Keys in deinen eigenen Observability-Stack loggen, hinter deiner Auth abschotten oder in Tests stubben? Übergib eine transport-Funktion. Das SDK debounced und batched weiterhin; du entscheidest, was mit dem Batch passiert.

main.tsx
1// custom transport — useful for tests, edge cases, or auditing2<SonentaProvider3  projectUuid="proj_xxx"4  token={import.meta.env.VITE_SONENTA_TOKEN}5  debounceMs={2000}6  transport={(batch) => fetch("/internal/i18n-misses", {7    method: "POST",8    body: JSON.stringify(batch),9  })}10/>

Weiter