Dynamische Inhalte

Ein kurzer Überblick über die Arbeit mit dynamischen Inhalten in GT.

Übersicht

Dynamische Inhalte sind grundsätzlich alle Inhalte, die sich abhängig von Nutzer, Kontext, Umgebung usw. ändern können. Das steht im Gegensatz zu statischen Inhalten, die unabhängig von Nutzer, Kontext, Umgebung usw. gleich bleiben.

„Tx oder nicht Tx“

Manchmal möchten wir dynamische Inhalte übersetzen, in anderen Fällen sollen sie unverändert bleiben.

Ein gutes Beispiel wäre die E‑Mail‑Adresse oder der Name eines Nutzers. Ein weiteres Beispiel könnte ein Kontostand oder die Sozialversicherungsnummer eines Nutzers sein. Solche Elemente (1) müssen in der Regel nicht übersetzt werden, wenn Ihre App in einer anderen Sprache gerendert wird, und (2) können variieren (in diesem Fall von Nutzer zu Nutzer).

Beispiel

Greeting.jsx
import { T, Var } from 'gt-next'

export default function Greeting(name) {
    return (
        <T id='greeting'>
            Hallo, <Var>{name}</Var>!
        </T>
    );
}

Was die Übersetzung betrifft, hat dies zwei Vorteile:

  1. Sie müssen nicht für jeden möglichen Namen eine Übersetzung erstellen.
    • Mit <Var> generieren wir nur eine einzige Übersetzung, die im Wesentlichen so aussieht:
      • ¡Hola, $&#123;name&#125;!
    • Wenn wir <Var> nicht verwenden, müssten wir für jeden eindeutigen Namen eine On-Demand-Übersetzung durchführen:
      • "¡Hola, Alice!", "¡Hola, Bob!", "¡Hola, Charlie!", "¡Hola, David!", ...
  2. Sie müssen sich außerdem keine Sorgen machen, dass die Namen selbst in eine übersetzte Form geändert werden (z. B. "¡Hola, Alicia!", "¡Hola, Roberto!", ...).

Wie Sie sehen, sollte die <Var>-Komponente verwendet werden, um alle Inhalte zu umschließen, die unabhängig von locale gleich bleiben sollen. Auf diese Weise vermeiden wir die Notwendigkeit, Übersetzungen für jeden möglichen value des dynamischen Inhalts zu erstellen.

Wenn Sie private Informationen in eine <Var>-Komponente einschließen, können Sie sicherstellen, dass die Informationen nicht an die General Translation API gesendet werden.

Ausnahmen

Die Ausnahmen zur obigen Aussage sind (1) im Fall einer verschachtelten <T>-Komponente, die innerhalb einer <Var>-Komponente verwendet wird (d. h. die children der verschachtelten <T>-Komponente werden übersetzt) oder (2) wenn Daten absichtlich über ein anderes Mittel innerhalb eines child der <Var>-Komponente an unsere API übergeben werden (z. B. ein fetch-Aufruf). Dies ist jedoch weder die beabsichtigte Verwendung der <Var>-Komponente noch der General Translation API, und dies kann Ladezeiten und Performance beeinträchtigen.

Wie ist diese Anleitung?