<T> Referenz
Dies ist ein detaillierter Einblick in die <T> Komponente und die gt-next Bibliothek.
Überblick
Dieser Artikel bietet einen tiefen Einblick in die Verwendung der <T>
Komponente in der gt-next
Bibliothek.
Bitte zögern Sie nicht, diese Seite nach Bedarf zu überspringen.
Wir werden die folgenden Themen behandeln:
Wenn Sie nach Informationen zur Verwendung von Variablen Komponenten oder Verzweigungskomponenten suchen, lesen Sie bitte die jeweiligen Artikel.
Was ist die <T>
Komponente?
Die <T>
Komponente ist der primäre Weg, um Text und Inhalte in der gt-next
Bibliothek zu übersetzen.
Sie ermöglicht die Inline-Übersetzung von Text und JSX-Strukturen und bietet eine direktere Möglichkeit, Übersetzungen in Ihrer Anwendung zu verwalten.
Dies ist oft bequemer für den Entwickler, da es eine direktere Kontrolle über den Übersetzungsinhalt ermöglicht.
Die <T>
Komponente unterstützt statischen Text, JSX-Strukturen und kontextbezogene Übersetzungen.
Wenn keine Übersetzung verfügbar ist, wird der Inhalt elegant in der Standardsprache der Anwendung angezeigt.
Designmuster
In diesem Abschnitt werden wir gängige Designmuster erläutern, die mit der <T>
-Komponente verwendet werden.
Dies wird auch Themen berühren, die nur am Rande mit der <T>
-Komponente zu tun haben, aber ebenso wichtig sind, wie
String-Übersetzung, fortgeschrittene Inhaltsübersetzung und Datenschutzbedenken.
Ihre <T>
-Komponenten in einem <GTProvider>
einbetten
<T>
wird verwendet, um statischen Text und JSX-Strukturen zu übersetzen.
Für clientseitige Komponenten MUSS <T>
in einem <GTProvider>
auf einer höheren Ebene eingebettet werden.
Unser Rat ist, Ihre Anwendung auf der Root-Ebene in einen <GTProvider>
einzubetten, um diesen Kontext bereitzustellen.
Ausnahmen: Serverseitige <T>
-Komponenten
Für serverseitiges Rendering ist der <GTProvider>
für <T>
-Komponenten optional.
Variablen in <T>
-Komponenten
Variablenkomponenten können in <T>
-Komponenten verwendet werden, um (1) dynamische Werte anzuzeigen und/oder (2) Inhalte zu markieren, die nicht übersetzt werden sollen.
Denken Sie an Dinge wie den Namen eines Benutzers: er ist (1) von Person zu Person unterschiedlich und (2) sollte sich nicht ändern, auch wenn sich die Sprache ändert.
Es gibt viele Variablenkomponenten: <Var>
, <Num>
, <Currency>
und <DateTime>
.
Einige davon werden den Inhalt automatisch basierend auf der Benutzersprache neu formatieren. Andere werden den Inhalt einfach als "nicht übersetzen" markieren.
Außerdem müssen diese Komponenten nicht unbedingt in einer <T>
-Komponente eingebettet sein, um den Inhalt neu zu formatieren.
Lesen Sie mehr darüber in diesem Artikel über Variablenkomponenten.
Verzweigungen in <T>
-Komponenten
Verzweigungskomponenten können verwendet werden, um basierend auf Bedingungen unterschiedliche Inhalte für Übersetzungen anzuzeigen.
Dazu gehören <Plural>
und <Branch>
Komponenten.
Wir verwenden diese Komponenten, weil sie einen optimierten Übersetzungsprozess ermöglichen.
Zum Beispiel ermöglicht die <Plural>
-Komponente, Sätze zu markieren, die bei der Übersetzung pluralisiert werden sollen.
Es ist auch nützlich, da es Ihre Pluralisierungslogik in Ihrer Anwendung in Ihrer Basissprache standardisiert.
Sie können je nach verwendeter Komponente unterschiedliche Optionen angeben. Lesen Sie mehr darüber im Artikel Verzweigungskomponenten.
Strings übersetzen
Wenn Sie nur einen String übersetzen möchten, können Sie useGT()
, getGT()
oder tx()
verwenden.
useGT()
und getGT()
werden verwendet, um Strings zur Buildzeit zu übersetzen.
tx()
wird verwendet, um Zeichenfolgen zur Laufzeit zu übersetzen.
Für weitere Informationen können Sie unseren Leitfaden zur Übersetzung von Zeichenfolgen konsultieren.
Hinzufügen von IDs zu <T>
Komponenten
Ein praktischer Debugging-Trick ist das Hinzufügen eines id
-Props zu Ihren <T>
Komponenten.
Dies ermöglicht es Ihnen, nachzuverfolgen, welche Übersetzungen in Ihrer Anwendung verwendet werden.
Es ermöglicht Ihnen auch, den Übersetzungseditor zu verwenden, um Änderungen an Ihren Übersetzungen vorzunehmen, ohne neu zu deployen.
Produktionsüberlegungen
Bereitstellung in der Produktion
Stellen Sie sicher, dass Sie den Übersetzungsbefehl ausführen, bevor Sie in die Produktion bereitstellen, damit alle Übersetzungen zur Laufzeit verfügbar sind. Wir empfehlen, ihn in Ihre CD-Pipeline oder als Teil Ihres Build-Skripts aufzunehmen.
Das war's! Sie haben Ihre Anwendung erfolgreich ins Französische, Spanische und Japanische übersetzt.
Für eine detailliertere Anleitung zur Bereitstellung Ihrer Anwendung lesen Sie bitte den Bereitstellungsleitfaden. Für weitere Informationen zum Befehl lesen Sie bitte die CLI-Tool Referenzanleitung.
Verhalten: Entwicklung vs Produktion
In der Entwicklung wird die <T>
Komponente Inhalte bei Bedarf übersetzen.
Das bedeutet, dass die Komponente bei der Darstellung sofort eine Übersetzung durchführt.
Wir tun dies aus Bequemlichkeit, um die Entwicklung mit anderen Sprachen zu erleichtern.
Um dieses Verhalten zu aktivieren, fügen Sie einfach einen Dev-API-Schlüssel zu Ihrer Umgebung hinzu.
In der Produktion wird die <T>
Komponente Inhalte zur Build-Zeit übersetzen.
Das bedeutet, dass Sie den Übersetzungsbefehl ausführen müssen, bevor Sie Ihre Anwendung bereitstellen.
Tipp: Wenn Sie das Produktionsverhalten in der Entwicklung simulieren möchten, verwenden Sie einfach einen Produktions-API-Schlüssel in Ihrem Entwicklungs-Build.
Datenschutzbedenken
Mit einigen Ausnahmen werden alle Inhalte, die in einer <T>
Komponente eingeschlossen sind, an die allgemeinen Übersetzungs-APIs zur Übersetzung gesendet.
Dies ist möglicherweise nicht wünschenswert für die Darstellung sensibler Daten wie Benutzernamen, Kontonummern usw.
Um dieses Problem zu umgehen, verwenden Sie Variable Komponenten, um private Informationen zu verarbeiten. Dies stellt sicher, dass keine sensiblen Daten an die allgemeinen Übersetzungs-APIs zur Übersetzung gesendet werden. Die Lokalisierung aller Inhalte, die in einer beliebigen Variablenkomponente eingeschlossen sind, wird lokal gehandhabt.
Beispiele
Grundlegende Verwendung
Der einfachste Anwendungsfall für <T>
ist die Übersetzung von statischem Text.
Dieses Beispiel stellt sicher, dass "Hello, world!"
basierend auf der Spracheinstellung des Benutzers übersetzt wird.
Zum Beispiel könnte es in einer spanischen Spracheinstellung als "¡Hola, mundo!"
angezeigt werden.
Kontext
Die <T>
Komponente unterstützt zusätzlichen Kontext, um Übersetzungen zu verfeinern.
Das Hinzufügen einer Kontext-Eigenschaft ermöglicht es, dasselbe id zu unterschiedlichen Übersetzungen je nach bereitgestelltem Kontext aufzulösen.
Zum Beispiel könnte der Kontext "formal"
eine Übersetzung wie "Guten Tag, alle zusammen!"
ergeben, während dasselbe id
ohne Kontext in der anderen Sprache "Hi there!"
ergeben könnte.
Natürlich würde es keine Änderung für die Basissprache geben.
Verschachtelte Komponenten
Die <T>
Komponente kann auch JSX-Strukturen übersetzen.
Alle Kinder der <T>
werden übersetzt.
Häufige Fallstricke
Nur direkte Nachkommen
Die <T>
Komponente übersetzt nur Text, der direkt als Kind übergeben wird.
Das bedeutet, dass wenn Sie Inhalte innerhalb einer Komponente haben, die nicht direkt an <T>
übergeben werden, diese nicht übersetzt werden.
Lassen Sie uns dies mit einem Beispiel veranschaulichen:
In diesem Beispiel wird der Inhalt innerhalb von <UntranslatedContent>
nicht übersetzt.
Nur der Inhalt direkt innerhalb von <T>
wird übersetzt, wie das <h1>
Tag und seine Kinder.
Dies geschieht aufgrund der Art und Weise, wie React Komponenten rendert.
Es ist ein wenig kompliziert, aber im Wesentlichen weiß React nicht, was der Inhalt einer Komponente ist, bis sie gerendert wurde.
Daher werden die Inhalte von Komponenten wie <UntranslatedContent>
nicht übersetzt.
Jedoch wird jeder Text, der direkt zwischen den beiden <T>
Tags steht, übersetzt.
Hinweis: Eine gute Faustregel ist, dass jeder Inhalt, der buchstäblich zwischen den beiden <T>
im Datei steht, übersetzt wird.
Sie können immer ein weiteres <T>
hinzufügen, um den Inhalt zu übersetzen, der nicht übersetzt wird, obwohl das Verschachteln von <T>
Komponenten nicht empfohlen wird.
Was ist die Lösung?
Ihr erster Instinkt könnte sein, eine zusätzliche <T>
Komponente innerhalb von <UntranslatedContent>
hinzuzufügen, aber das wird nicht empfohlen.
Wir besprechen dies weiter unten.
Die Lösung besteht darin, den Text immer direkt in der <T>
Komponente zu umschließen, wie folgt:
Was ist mit Variablen?
Variablen sind etwas komplizierter, da sie dazu neigen, ihre Werte zu ändern. Wir empfehlen die Verwendung von Variable Components zur Anzeige dynamischer Werte und Branching Components für bedingte Logik.
Wenn Sie dynamische Inhalte zur Laufzeit übersetzen möchten, schauen Sie sich tx()
und <Tx>
an.
Verschachtelte <T>
Komponenten
Das Verschachteln von <T>
Komponenten ist nicht erlaubt.
Aufgrund des Rendering-Systems von React kann dies zu unerwartetem Verhalten und Leistungsproblemen führen, wenn auf Abruf übersetzt wird.
Hier ist ein Beispiel für was man nicht tun sollte:
Die Lösung hier ist, die äußerste <T>
Komponente zu entfernen.
Bedingte Inhalte
Ähnlich wie bei der Darstellung variabler Inhalte müssen bedingte Inhalte innerhalb einer <T>
Komponente ordnungsgemäß behandelt werden.
Es ist immer am besten, den bedingten Inhalt in einer Branching Component zu umschließen, um die Übersetzung des Inhalts zu optimieren.
Notizen
<T>
-Komponenten werden verwendet, um beliebige JSX-Inhalte zu übersetzen.- Um Übersetzungen in Client-Komponenten zu aktivieren, umwickeln Sie Ihre App mit einem
<GTProvider>
. <T>
übersetzt Inhalte zur Build-Zeit, nicht zur Laufzeit. Die Entwicklung wird zur Bequemlichkeit eine bedarfsgerechte Übersetzung durchführen, aber dies ist im Produktionsbetrieb nicht der Fall.
Nächste Schritte
- Erkunden Sie den Artikel zu Variablenkomponenten und den Leitfaden zu Verzweigungskomponenten.
- Erfahren Sie mehr über das Übersetzen von Zeichenfolgen in Ihrer Anwendung.
- Für die Laufzeitübersetzung schauen Sie sich
tx()
und<Tx>
an.