Alpha
Le Compiler de Lingo.dev est en version alpha. Il est instable, n’est pas recommandé pour une utilisation en production et les API peuvent changer d’une version à l’autre.
Le Compiler de Lingo.dev détecte les formes plurielles dans votre texte JSX et les convertit automatiquement au format ICU MessageFormat. Au lieu d’écrire manuellement les règles de pluriel pour chaque langue, rédigez un texte naturel avec des valeurs numériques, et le Compiler génère les formes plurielles appropriées à l’aide d’un LLM.
Comment ça marche#
Le Compiler détecte les motifs numériques
Lors de l’analyse de l’AST, le Compiler identifie les nœuds de texte qui contiennent des nombres interpolés associés à des mots dépendant de la quantité. Par exemple, You have {count} items contient une variable numérique à côté d’un mot dont la forme change selon la quantité.
Le LLM identifie les formes plurielles
Un petit LLM rapide (configurable via pluralization.model) analyse le texte et détermine quels mots doivent être fléchis au pluriel. Il génère les catégories de pluriel CLDR adaptées à chaque langue cible.
ICU MessageFormat est généré
Le Compiler produit une chaîne ICU MessageFormat qui gère toutes les catégories de pluriel requises par la langue cible.
Exemple#
JSX source :
<p>You have {count} items in your cart</p>Sortie générée pour l’anglais :
{count, plural, one {You have 1 item in your cart} other {You have # items in your cart}}Sortie générée pour le russe (qui comporte quatre catégories de pluriel) :
{count, plural, one {У вас # товар в корзине} few {У вас # товара в корзине} many {У вас # товаров в корзине} other {У вас # товаров в корзине}}Catégories de pluriel CLDR#
Les langues n’utilisent pas toutes les mêmes sous-ensembles des six catégories de pluriel CLDR. Le Compiler génère uniquement les catégories requises pour chaque langue cible :
| Catégorie | Description | Exemples de langues |
|---|---|---|
zero | Quantité nulle | Arabe, letton |
one | Singulier | Anglais, français, allemand, espagnol |
two | Duel | Arabe, hébreu, slovène |
few | Paucal / petite quantité | Russe, tchèque, polonais |
many | Grande quantité | Russe, arabe, polonais |
other | Général / par défaut (toujours requis) | Toutes les langues |
L’anglais utilise one et other. Le russe utilise one, few, many et other. L’arabe utilise les six catégories. Le Compiler gère cela automatiquement pour chaque langue.
Configuration#
La pluralisation est activée par défaut. Configurez-la dans les options du Compiler :
{
pluralization: {
enabled: true,
model: "groq:llama-3.1-8b-instant",
},
}| Option | Type | Par défaut | Description |
|---|---|---|---|
pluralization.enabled | boolean | true | Active ou désactive la détection automatique du pluriel. |
pluralization.model | string | "groq:llama-3.1-8b-instant" | Modèle LLM utilisé pour détecter les formes plurielles. Un modèle plus léger suffit, car cette détection est plus simple que la traduction. |
Pour désactiver complètement la pluralisation :
{
pluralization: {
enabled: false,
},
}Désactiver la pluralisation signifie que le Compiler traduit le texte contenant des nombres comme de simples chaînes. Le résultat traduit peut ne pas être grammaticalement correct pour toutes les quantités dans les langues aux règles de pluriel complexes.
Quand la pluralisation s’applique#
Le Compiler détecte les motifs de pluriel dans les cas suivants :
- Texte avec variables numériques interpolées :
{count} items,{n} messages - Texte avec valeurs numériques littérales :
You have 5 items(moins courant dans une interface dynamique)
Le Compiler ne pluralise pas :
- Texte sans référence numérique :
Items in cart(aucun nombre sur lequel s’appuyer) - Texte où le nombre n’est pas directement lié à un mot dépendant de la quantité
Écrivez naturellement dans votre JSX. Le Compiler et son LLM se chargent de détecter le pluriel et de générer le format ICU — vous n’avez pas besoin d’apprendre la syntaxe d’ICU MessageFormat.
