ts-intl
Kapitel:Namespaces & Scoping

Namespaces & Scoping

Das Strukturieren von Übersetzungsschlüsseln nach Funktionsmodulen oder Seiten verhindert Namenskollisionen und vereinfacht die Aufrufpfade.

Scoped-Übersetzer (Namespace-gebunden)

Wird beim Aufruf von getTranslations ein Namespace als zweites Argument übergeben, liefert die Methode eine Übersetzungsfunktion zurück, die an diesen Namespace gebunden ist:

const messages = {
  admin: {
    dashboard: {
      metrics: "Live-Statistiken",
      refresh: "Daten aktualisieren",
    },
  },
} as const;

// Auf verschachtelten Namespace einschränken
const t = getTranslations("de-DE", "admin.dashboard");

t("metrics"); // "Live-Statistiken"
t("refresh"); // "Daten aktualisieren"

Globale flache Übersetzer

Wird der Namespace-Parameter weggelassen, gibt getTranslations einen Root-Übersetzer zurück, der den Zugriff auf verschachtelte Schlüssel über punktseparierte Pfade unterstützt:

const t = getTranslations("de-DE");

t("admin.dashboard.metrics"); // "Live-Statistiken"

Rohdaten extrahieren mit t.raw()

Wenn Sie rohe Datenstrukturen wie Konfigurationsobjekte oder Arrays direkt abrufen möchten, können Sie t.raw() verwenden:

const messages = {
  config: {
    maxRetries: 3,
    endpoints: ["api-1.example.com", "api-2.example.com"],
  },
} as const;

const t = getTranslations("de-DE");

const endpoints = t.raw("config.endpoints");
// Abgeleiteter Typ: readonly ["api-1.example.com", "api-2.example.com"]

Vorhandensein von Schlüsseln prüfen mit t.has()

Prüft, ob ein bestimmter Schlüssel in der aktuellen Sprache oder der Fallback-Sprache vorhanden ist, ohne Warnungen zu fehlenden Schlüsseln auszulösen:

const t = getTranslations("de-DE", "features");

if (t.has("betaFeatureBadge")) {
  renderBadge(t("betaFeatureBadge"));
}