Aussi disponible en : English · Español · Português · العربية
Règles de pluriel CLDR
Montre dans quelle catégorie de pluriel tombe n’importe quel nombre, dans cinq langues à la fois, avec les données qu’utilise votre navigateur.
Que sont les règles de pluriel ?
Si vous avez déjà écrit « 1 fichier(s) supprimé(s) », vous connaissez le problème que ces règles résolvent. Le français a besoin de deux formes — fichier et fichiers — et la rustine évidente consiste à tester si le compte vaut un. Elle casse dès que l’interface est traduite, car les langues ne s’accordent ni sur le nombre de formes ni sur les nombres qui reçoivent chacune.
Le CLDR, le dépôt de données de localisation d’Unicode, tranche en donnant à chaque langue un ensemble de catégories nommées, choisies parmi six possibilités : zero, one, two, few, many et other. Chaque langue emploie celles dont elle a besoin. Votre code écrit un message par catégorie et l’environnement choisit. Tous les navigateurs l’exposent via Intl.PluralRules : rien à télécharger, rien à maintenir.
L’outil ci-dessus pose cette question à cinq langues en même temps. Tapez un nombre et chacune dit dans quelle catégorie il tombe — et l’intéressant, c’est la fréquence de leurs désaccords, y compris sur des nombres qu’on n’imaginerait pas litigieux.
Comment s’en servir
- Tapez un nombre et lisez la colonne. Chaque langue indique la catégorie où ce nombre tombe. Commencez par 0 : l’anglais et l’espagnol le disent pluriel, le français et le portugais le disent singulier, et l’arabe lui donne une forme à lui. Trois sur cinq ne sont pas d’accord avec l’anglais à propos de rien du tout.
- Basculez entre compter et ordonner. Le cardinal, c’est un fichier, deux fichiers. L’ordinal, c’est 1er, 2e, 3e. Ce sont deux jeux de règles distincts avec des nombres de catégories distincts, et actionner le bouton est le moyen le plus rapide de voir à quel point une même langue les traite différemment.
- Essayez un intervalle. Le second contrôle emploie selectRange, dont presque personne ne soupçonne l’existence : il répond à la question de la forme que prend « 1-2 éléments ». En anglais, un intervalle de 1 à 1 n’est pas au singulier, ce qui surprend à peu près tout le monde.
Le renversement : c’est l’anglais le compliqué
L’idée reçue veut que les pluriels anglais soient simples et ceux des autres langues difficiles. Pour compter, c’est exact : l’anglais emploie deux catégories là où l’arabe en emploie six. L’arabe a une forme pour zéro, une pour un, un duel propre à exactement deux, une pour trois à dix, une autre pour onze à quatre-vingt-dix-neuf, et un cas général. Et c’est même modulaire : 103 prend la forme de 3, et 111 celle de 11.
Pour ordonner, tout s’inverse. L’anglais réclame quatre formes ordinales, parce que 1st, 2nd et 3rd portent des suffixes différents et que tout le reste prend -th — avec l’exception des teens, qu’aucune règle portant sur le seul dernier chiffre ne sait exprimer : c’est pourquoi 21st est « one » et 11th est « other ». L’arabe n’a besoin que d’une seule forme ordinale. L’espagnol aussi, le portugais aussi ; le français en demande deux.
Mettez les deux bout à bout et l’anglais est la seule de ces cinq langues à avoir plus de catégories ordinales que de catégories de pluriel. La langue qu’on dit simple est, sur cet axe, la plus exigeante du lot — et tout code qui fixe le suffixe ordinal anglais en regardant le dernier chiffre se trompera sur les teens.
Une autre bizarrerie mérite d’être tapée. Le français, l’espagnol et le portugais possèdent une troisième catégorie qui ne se déclenche que sur les multiples exacts d’un million. 999 999 est banal, 1 000 000 prend une forme spéciale, et 1 000 001 redevient banal.
Limites assumées
Une catégorie de pluriel n’est pas une traduction. Savoir qu’un nombre tombe dans « few » vous dit quel emplacement de message employer ; cela n’écrit pas le message. Ces règles portent sur l’accord grammatical, et les mots restent les vôtres.
Les catégories ne sont pas non plus tout l’accord. Beaucoup de langues fléchissent aussi en cas et en genre, et un décompte peut changer davantage que la terminaison du nom : l’arabe en particulier modifie la forme du nom et son cas selon le nombre. Les catégories du CLDR couvrent la part qu’une bibliothèque de messages peut automatiser, ce qui est réel mais partiel.
Les tables du bas ont été calculées à la construction de cette page ; l’encadré du haut emploie votre navigateur pendant que vous lisez. Les deux puisent dans le CLDR, mais un navigateur et un serveur de compilation peuvent porter des versions différentes, et le CLDR révise ses règles. Si les deux venaient à diverger sur votre écran, c’est l’encadré qui a raison pour vous, et la divergence est elle-même l’information utile — d’où l’affichage des deux plutôt qu’un choix.
Une chose que l’API JavaScript ne sait pas exprimer : le CLDR distingue 1 de 1,0, car une langue peut traiter « 1,0 mètre » comme un pluriel là où « 1 mètre » est singulier. En JavaScript ce sont le même nombre, donc passer 1.0 donne la réponse de 1. Pour obtenir l’autre, il faut formater la valeur en chaîne et laisser le formatage porter la décimale.
Enfin, cette page compare les cinq langues dans lesquelles le site est publié. Intl.PluralRules en connaît des centaines d’autres, et certaines se comportent d’une manière qu’aucune de ces cinq n’illustre : une langue peut avoir une catégorie qu’aucun entier n’atteint, si bien que compter vers le haut ne la révélerait jamais.
Pourquoi est-ce gratuit ?
Parce qu’il n’y a rien à payer. Les règles sont déjà dans votre navigateur ; cette page n’embarque aucune donnée, elle se contente de demander et d’afficher. Rien n’est envoyé et il n’y a pas de compte.
Les chiffres de l’article sont vérifiés par la suite de tests contre cette même API : si le CLDR révise une règle, le texte casse la compilation au lieu de devenir faux en silence. Lorsqu’une affirmation dépend d’une langue extérieure à ces cinq, les tests vont la chercher plutôt que de la déduire de celles qui sont à l’écran.