Alpha
Der Lingo.dev Compiler befindet sich in der Alpha-Phase. Er ist instabil, nicht für den Produktionseinsatz geeignet, und APIs können sich zwischen Releases ändern.
Der Lingo.dev Compiler erkennt Pluralformen in deinem JSX-Text und wandelt sie automatisch in ICU MessageFormat um. Statt Pluralregeln für jede Sprache manuell zu schreiben, formulierst du natürlichen Text mit Zahlenwerten, und der Compiler erzeugt mithilfe eines LLM die passenden Pluralformen.
So funktioniert's#
Compiler erkennt numerische Muster
Während der AST-Analyse identifiziert der Compiler Textknoten, die interpolierte Zahlen zusammen mit mengenabhängigen Wörtern enthalten. Zum Beispiel enthält You have {count} items eine numerische Variable neben einem Wort, das sich je nach Anzahl verändert.
LLM klassifiziert Pluralformen
Ein kleines, schnelles LLM (konfigurierbar über pluralization.model) analysiert den Text und bestimmt, welche Wörter eine Pluralform benötigen. Es erzeugt die passenden CLDR-Pluralkategorien für jede Zielsprache.
ICU MessageFormat wird erzeugt
Der Compiler erzeugt einen ICU-MessageFormat-String, der alle für die Zielsprache erforderlichen Pluralkategorien abdeckt.
Beispiel#
JSX-Quelle:
<p>You have {count} items in your cart</p>Generierte Ausgabe für Englisch:
{count, plural, one {You have 1 item in your cart} other {You have # items in your cart}}Generierte Ausgabe für Russisch (mit vier Pluralkategorien):
{count, plural, one {У вас # товар в корзине} few {У вас # товара в корзине} many {У вас # товаров в корзине} other {У вас # товаров в корзине}}CLDR-Pluralkategorien#
Verschiedene Sprachen verwenden unterschiedliche Teilmengen der sechs CLDR-Pluralkategorien. Der Compiler erzeugt nur die Kategorien, die für die jeweilige Zielsprache erforderlich sind:
| Kategorie | Beschreibung | Beispielsprachen |
|---|---|---|
zero | Nullmenge | Arabisch, Lettisch |
one | Singular | Englisch, Französisch, Deutsch, Spanisch |
two | Dual | Arabisch, Hebräisch, Slowenisch |
few | Paukal / kleine Menge | Russisch, Tschechisch, Polnisch |
many | Große Menge | Russisch, Arabisch, Polnisch |
other | Allgemein / Standard (immer erforderlich) | Alle Sprachen |
Englisch verwendet one und other. Russisch verwendet one, few, many und other. Arabisch verwendet alle sechs Kategorien. Der Compiler übernimmt das automatisch für jede Sprache.
Konfiguration#
Die Pluralisierung ist standardmäßig aktiviert. Du kannst sie in den Compiler-Optionen konfigurieren:
{
pluralization: {
enabled: true,
model: "groq:llama-3.1-8b-instant",
},
}| Option | Typ | Standard | Beschreibung |
|---|---|---|---|
pluralization.enabled | boolean | true | Automatische Pluralerkennung aktivieren oder deaktivieren. |
pluralization.model | string | "groq:llama-3.1-8b-instant" | LLM-Modell zur Erkennung von Pluralformen. Ein kleineres Modell reicht aus, da die Erkennung einfacher ist als die Übersetzung. |
So deaktivierst du die Pluralisierung vollständig:
{
pluralization: {
enabled: false,
},
}Wenn du die Pluralisierung deaktivierst, übersetzt der Compiler Texte mit Zahlen als einfache Strings. In Sprachen mit komplexen Pluralregeln ist die übersetzte Ausgabe dann möglicherweise nicht für alle Mengen grammatikalisch korrekt.
Wann Pluralisierung greift#
Der Compiler erkennt Pluralmuster in folgenden Fällen:
- Text mit interpolierten numerischen Variablen:
{count} items,{n} messages - Text mit numerischen Literalen:
You have 5 items(weniger häufig in dynamischen UIs)
Der Compiler pluralisiert nicht:
- Text ohne numerischen Bezug:
Items in cart(keine Zahl, anhand derer verzweigt werden kann) - Text, bei dem die Zahl nicht direkt mit einem mengenabhängigen Wort zusammenhängt
Schreibe natürlichen Text in dein JSX. Der Compiler und sein LLM übernehmen die Pluralerkennung und ICU-Formatierung – du musst die Syntax von ICU MessageFormat nicht lernen.
