Automatische Pluralisierung
@lingo.dev/compiler erkennt automatisch Pluralformen in deinem Text und wandelt sie in das ICU MessageFormat um, um eine korrekte Pluralisierung in allen Sprachen zu gewährleisten.
Was es macht
Der Compiler nutzt KI, um zu erkennen, wenn ein Text Pluralformen enthält (z. B. "1 item" vs. "5 items"), und wandelt diese in die ICU MessageFormat-Syntax um.
Vorher (dein Code):
<p>You have {count} items</p>
Nachher (kompiliert):
<p>{count, plural, one {You have 1 item} other {You have # items}}</p>
Verschiedene Sprachen haben unterschiedliche Pluralregeln. Arabisch hat 6 Formen, Russisch 4, Englisch 2. Das ICU MessageFormat verarbeitet alle korrekt.
Wie es funktioniert
- Der Compiler erkennt Interpolationen mit numerischen Werten
- Sendet den Text an das LLM zur Erkennung von Pluralformen
- Das LLM gibt ein ICU MessageFormat-Muster zurück, wenn eine Pluralisierung erkannt wird
- Der Compiler fügt die pluralfähige Übersetzung ein
Dies geschieht automatisch – keine Codeänderungen erforderlich.
Konfiguration
{
pluralization: {
enabled: true, // Default: true
model: "groq:llama-3.1-8b-instant", // Fast model for plural detection
}
}
Modell: Verwendet ein separates (schnelles) Modell zur Pluralerkennung, um die Kosten niedrig zu halten. Standardmäßig wird das schnellste Modell von Groq verwendet.
Beispiele
Einfache Plurale
<p>You have {count} items in your cart</p>
Wird zu:
{count, plural,
one {You have 1 item in your cart}
other {You have # items in your cart}
}
Null-Form
<p>You have {unreadCount} unread messages</p>
Wird zu:
{unreadCount, plural,
=0 {You have no unread messages}
one {You have 1 unread message}
other {You have # unread messages}
}
Komplexe Plurale
<p>{days} days and {hours} hours remaining</p>
Wird zu:
{days, plural,
one {1 day}
other {# days}
} and {hours, plural,
one {1 hour}
other {# hours}
} remaining
Sprachspezifische Regeln
ICU MessageFormat verarbeitet komplexe Pluralregeln automatisch:
Englisch (2 Formen):
- one: 1 item
- other: 0 items, 2 items, 100 items
Russisch (4 Formen):
- one: 1, 21, 31, 41... (оди́н элеме́нт)
- few: 2-4, 22-24... (два элеме́нта)
- many: 0, 5-20, 25-30... (пять элеме́нтов)
- other: 1.5, 2.5... (1.5 элеме́нта)
Arabisch (6 Formen):
- zero: 0
- one: 1
- two: 2
- few: 3-10
- many: 11-99
- other: 100+
Der Compiler generiert korrekte Formen für jede Zielsprache.
Pluralisierung deaktivieren
Falls Ihre App keine Pluralformen verwendet oder Sie diese manuell verarbeiten möchten:
{
pluralization: {
enabled: false,
}
}
Dies überspringt die Pluralerkennung vollständig und reduziert LLM-Aufrufe.
Manuelle Pluralformen
Sie können ICU MessageFormat direkt in Ihrem Code schreiben:
<p>
{formatMessage(
{ id: "items", defaultMessage: "{count, plural, one {# item} other {# items}}" },
{ count }
)}
</p>
Der Compiler versucht nicht, Plurale zu erkennen – er verwendet Ihr exaktes Format.
Performance
Die Pluralerkennung verursacht einen geringen Overhead:
- Ein zusätzlicher LLM-Aufruf pro eindeutigem Text mit numerischen Interpolationen
- Verwendet schnelles Modell (Standard: Groq llama-3.1-8b-instant)
- Ergebnisse werden gecacht – nachfolgende Builds verwenden erkannte Plurale wieder
Kosten: Vernachlässigbar. Schnelle Modelle kosten Bruchteile eines Cents pro Anfrage.
Häufige Fragen
Funktioniert das für alle Sprachen? Ja. ICU MessageFormat unterstützt über 200 Sprachen mit korrekten Pluralregeln.
Was passiert, wenn die KI einen Fehler macht?
Verwenden Sie data-lingo-override, um exakte Übersetzungen mit korrekten Pluralformen anzugeben:
<p data-lingo-override={{
es: "{count, plural, one {1 artículo} other {# artículos}}"
}}>
{count} items
</p>
Kann ich das Modell für die Pluralerkennung anpassen?
Ja. Setzen Sie pluralization.model auf ein beliebiges unterstütztes LLM. Der Standard ist für Geschwindigkeit und Kosten optimiert.
Erhöht dies die Bundle-Größe? Geringfügig. ICU MessageFormat-Muster sind etwas größer als einfache Strings. Die Auswirkung ist minimal.
Was ist mit verschachtelten Pluralformen? Werden unterstützt. Der Compiler verarbeitet mehrere pluralisierte Variablen im selben String.
Muss ich Pluralformen markieren?
Nein. Der Compiler erkennt sie automatisch, wenn pluralization.enabled: true.
Debugging
Um erkannte Pluralformen anzuzeigen, prüfen Sie .lingo/metadata.json:
{
"translations": {
"abc123": {
"source": "You have {count} items",
"pattern": "{count, plural, one {You have 1 item} other {You have # items}}",
"locales": {
"es": "{count, plural, one {Tienes 1 artículo} other {Tienes # artículos}}"
}
}
}
}
Das Feld pattern zeigt das vom Compiler erkannte ICU MessageFormat.
Nächste Schritte
- Manuelle Überschreibungen — Pluralformen manuell überschreiben
- Konfigurationsreferenz — Pluralisierungsoptionen
- ICU MessageFormat-Leitfaden — ICU-Syntax lernen