Stellen Sie Ihre Frage und erhalten Sie einen Resümee des Dokuments, indem Sie diese Seite und den AI-Anbieter Ihrer Wahl referenzieren
Versionshistorie
- "Auswahlbasierten Inhalt eingeführt"v9.1.030.7.2026
Der Inhalt dieser Seite wurde mit einer KI übersetzt.
Den englischen Originaltext ansehenIf you have an idea for improving this documentation, please feel free to contribute by submitting a pull request on GitHub.
GitHub link to the documentationCopy doc Markdown to clipboard
Auswahlbasierter Inhalt / Select in Intlayer
Wie Select funktioniert
In Intlayer wird auswahlbasierter Inhalt durch die Funktion select erreicht, die beliebige Zeichenfolgenwerte ihrem entsprechenden Inhalt zuordnet. Dies entspricht einer ICU-Nachricht {value, select, …} oder einer switch-Anweisung im Code Ihrer Anwendung.
Verwenden Sie select, wenn der Diskriminant eine freiformatige Zeichenfolge ist — ein Status, ein Plan, eine Plattform, eine Rolle. Für die anderen Diskriminanten bietet Intlayer spezielle Knoten:
Tabelle in einem Modal öffnen, um alle Daten übersichtlich anzuzeigen
| Diskriminant | Knoten |
|---|---|
| Eine Menge | enu() |
| Ein Boolean | cond() |
| Ein Geschlecht | gender() |
| Jede andere Zeichenfolge | select() |
Einrichten von auswahlbasiertem Inhalt
Um auswahlbasierten Inhalt in Ihrem Intlayer-Projekt einzurichten, erstellen Sie ein Inhaltsmodul, das Ihre Auswahl-Definitionen enthält. Unten finden Sie Beispiele in verschiedenen Formaten.
Kopieren Sie den Code in die Zwischenablage
import { select, type Dictionary } from "intlayer";
const myPostContent = {
key: "my_key",
content: {
publishStatus: select({
draft: "This post is a draft",
published: "This post is live",
scheduled: "This post is scheduled",
fallback: "Unknown status", // Optional
}),
},
} satisfies Dictionary;
export default myPostContent;Wenn keinfallbackdeklariert ist, wird der zuletzt deklarierte Schlüssel als Fallback herangezogen, wenn der bereitgestellte Wert mit keinem deklarierten Fall übereinstimmt — derselbe Vertrag wie beicond()undgender().
Typsicherheit
Das akzeptierte Argument wird aus den deklarierten Fällen abgeleitet:
- Ohne einen
fallbackwerden nur die deklarierten Fälle akzeptiert — ein Tippfehler ist ein Typfehler. - Mit einem
fallbackwird jede Zeichenfolge akzeptiert (der Fallback deckt die nicht übereinstimmenden Werte ab), während die deklarierten Fälle weiterhin automatisch vervollständigt werden.
Warum kein einfaches Objekt?
Es ist verlockend, ein einfaches Objekt zu deklarieren und es mit dem Laufzeitwert zu indizieren:
Kopieren Sie den Code in die Zwischenablage
// ❌ Tun Sie das nichtconst { publishStatus } = useIntlayer("my_key");return <p>{publishStatus[publishType]}</p>;Der Intlayer-Compiler analysiert Ihren Quellcode, um ungenutzten Inhalt zu bereinigen und die verbleibenden Schlüssel zu minimieren. Ein dynamischer berechneter Zugriff (obj[expr]) kann nicht statisch aufgelöst werden, sodass der gesamte Zweig als undurchsichtig markiert wird: Er bleibt im Bundle erhalten und seine Schlüssel bleiben unminimiert.
Mit select() erfolgt die Fallauflösung innerhalb eines Funktionsaufrufs und nicht als Eigenschaftszugriff. Der Compiler sieht einen einzelnen statischen Feldzugriff und optimiert den Knoten genau wie enu(), cond() oder gender():
Kopieren Sie den Code in die Zwischenablage
// ✅ Tun Sie diesconst { publishStatus } = useIntlayer("my_key");return <p>{publishStatus(publishType)}</p>;Verwenden von auswahlbasiertem Inhalt
Um auswahlbasierten Inhalt in einer React-Komponente zu verwenden, importieren und nutzen Sie den Hook useIntlayer aus dem Paket react-intlayer. Dieser Hook ruft den Inhalt für den angegebenen Schlüssel ab und ermöglicht es Ihnen, einen Wert zu übergeben, um die entsprechende Ausgabe auszuwählen.
Kopieren Sie den Code in die Zwischenablage
import type { FC } from "react";
import { useIntlayer } from "react-intlayer";
const PostStatus: FC = () => {
const { publishStatus } = useIntlayer("my_key");
return (
<div>
<p>
{
/* Ausgabe: This post is a draft */
publishStatus("draft")
}
</p>
<p>
{
/* Ausgabe: This post is live */
publishStatus("published")
}
</p>
<p>
{
/* Ausgabe: Unknown status */
publishStatus("Archived")
}
</p>
</div>
);
};
export default PostStatus;Kombination von Select mit anderen Knoten
Jeder Fall enthält einen vollständigen Inhaltsknoten, sodass sich select mit t(), insert(), md() und den anderen kombinieren lässt:
Kopieren Sie den Code in die Zwischenablage
import { insert, select, t, type Dictionary } from "intlayer";const myPostContent = { key: "my_key", content: { publishStatus: select({ draft: insert( t({ en: "{{name}} saved a draft", fr: "{{name}} a enregistré un brouillon", de: "{{name}} hat einen Entwurf gespeichert", }) ), published: insert( t({ en: "{{name}} published the post", fr: "{{name}} a publié l’article", de: "{{name}} hat den Beitrag veröffentlicht", }) ), fallback: insert( t({ en: "{{name}} updated the post", fr: "{{name}} a mis à jour l’article", de: "{{name}} hat den Beitrag aktualisiert", }) ), }), },} satisfies Dictionary;export default myPostContent;Kopieren Sie den Code in die Zwischenablage
publishStatus("draft")({ name: "Alice" }); // Ausgabe: Alice hat einen Entwurf gespeichertMigration von ICU select
Nachrichten, die das ICU-Argument select verwenden, werden als select-Knoten importiert:
Kopieren Sie den Code in die Zwischenablage
{publishType, select, draft {draft} published {published} other {Unknown}}wird zu
Kopieren Sie den Code in die Zwischenablage
select( { draft: "draft", published: "published", fallback: "Unknown", }, "publishType");Der ICU-Fall other wird in fallback umbenannt, was der kanonische Name von Intlayer für einen Auffangfall (Catch-All) ist. Das zweite Argument zeichnet den ICU-Variablennamen auf, sodass die Nachricht beim Exportieren wieder in genau dieselbe ICU-Zeichenfolge umgewandelt wird.
Ein ICUselect, dessen Fälle Geschlechterwerte sind (male/female/other), wird stattdessen alsgender-Knoten importiert.
Zusätzliche Ressourcen
Für detailliertere Informationen zur Konfiguration und Nutzung lesen Sie die folgenden Ressourcen:
Diese Ressourcen bieten weitere Einblicke in die Einrichtung und Verwendung von Intlayer in verschiedenen Umgebungen und Frameworks.