Vous vous trouvez probablement ici parce que vous localisez un fichier <tt>.properties</tt> et que celui-ci liait vers cette page. Celle-ci a pour objet d'expliquer comment localiser ces chaînes afin que la forme plurielle correcte soit affichée pour l'utilisateur. Par exemple, on aura « 1 page », mais « 2 pages ».
Si vous êtes ici pour rendre votre code (par exemple une extension) localisable avec des formes plurielles, vous pouvez passer directement au paragraphe Développement avec PluralForm, mais vous aurez probablement besoin de définir les chaînes initiales pour votre code de la même manière, il vaudrait donc mieux parcourir également au moins la section Utilisation.
Utilisation
Les termes suivants sont utilisés dans cette page pour que les choses soient les plus claires possibles :
- règle de pluriel : pour une langue donnée, il existe une règle grammaticale sur la forme des mots selon leur nombre qualificatif. Chaque langue peut avoir ses propres règles.
- forme plurielle : pour une règle de pluriel particulière, différentes formes d'un mot peuvent exister comme « page » et « pages ». Dans ce cas, on a simplement deux formes, mais d'autre langues peuvent n'en avoir qu'une seule ou beaucoup plus.
Si vous êtes ici pour traiter <tt>pluralRule</tt> dans le fichier <tt>chrome/global/intl.properties</tt>, vous devrez d'abord établir quelle règle de pluriel choisir pour votre localisation. Cette règle de pluriel est utilisée pour déterminer le nombre de formes plurielles nécessaires pour chaque mot qui doit être localisé en tenant compte des pluriels.
Pour tous les autres fichiers properties qui lient vers cette page, vous devrez fournir autant de formes plurielles que nécessaire du mot désiré et les séparer par des points-virgules (;). Si vous ne savez pas combien vous en avez besoin, vérifiez le nombre <tt>pluralRule</tt> dans <tt>chrome/global/intl.properties</tt> et vérifiez l'entrée correspondante dans la liste suivante de règles de pluriel.
Liste de règles de pluriel
Cette section contient une liste de règles de pluriel triées par leur nombre de règle. Chaque entrée indique combien de formes plurielles sont nécessaires pour localiser un mot. Pour chacune d'entre-elles, une liste de familles et de langues correspondantes est fournie afin de vous aider à déterminer s'il s'agit de la règle à choisir pour <tt>pluralRule</tt>. En outre, vous y trouverez une brève description de chaque forme plurielle suivie de quelques exemples de nombres entrant dans cette forme particulière.
Pour une règle de pluriel donnée, l'ordre dans lequel les formes de pluriels sont données est le même que celui dans lequel vous devrez localiser un mot en les séparant par des points-virgules. Par exemple, le français utilise la règle plurielle 2 et la localisation de <tt>pluriels</tt> nécessiterait une chaîne de type « pluriel;pluriels » où le premier mot est la forme au singulier et le second la forme plurielle générique.
Règle de pluriel n°0 (1 forme)
Familles : asiatiques (chinois, japonais, coréen, vietnamien), turques/altaïques (turc), thaïes
tout : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, …
Règle de pluriel n°1 (2 formes)
Familles : germaniques (danois, néerlandais, anglais, féroïen, frison, allemand, norvégien, suédois), finno-ougriennes (estonien, finnois, hongrois), isolats (basque), latines/grecques (grec), sémitiques (hébreu), romanes (italien, portugais, espagnol, catalan)
pour 1 : 1
tout le reste : 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, …
Règle de pluriel n°2 (2 formes)
Familles: romanes (français, portugais brésilien)
pour 0 ou 1 : 0, 1
tout le reste: 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, …
Règle de pluriel n°3 (3 formes)
Familles : baltes (letton)
pour 0 : 0
se termine par 1, sauf 11: 1, 21, 31, 41, 51, 61, 71, 81, 91, 101, 121, 131, 141, 151, 161, 171, 181, 191, 201, 221, 231, 241, 251, 261, 271, 281, 291, …
tout le reste : 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 36, 37, 38, 39, 40, 42, 43, 44, 45, 46, 47, 48, 49, 50, 52, 53, 54, 55, …
Règle de pluriel n°4 (3 formes)
Familles : celtiques (gaélique écossais)
pour 1 : 1
pour 2 : 2
tout le reste : 0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, …
Règle de pluriel n°5 (3 formes)
Familles : romanes (roumain)
pour 1 : 1
pour 0 ou se terminant par 01-19 : 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, …
tout le reste : 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, …
Règle de pluriel n°6 (3 formes)
Familles : baltes (lituanien)
se termine par 1, sauf 11 : 1, 21, 31, 41, 51, 61, 71, 81, 91, 101, 121, 131, 141, 151, 161, 171, 181, 191, 201, 221, 231, 241, 251, 261, 271, 281, 291, …
se termine par 0 ou par 10-20 : 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 130, 140, 150, 160, 170, 180, 190, 200, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, …
tout le reste : 2, 3, 4, 5, 6, 7, 8, 9, 22, 23, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 38, 39, 42, 43, 44, 45, 46, 47, 48, 49, 52, 53, 54, 55, 56, 57, 58, 59, 62, 63, 64, 65, 66, 67, 68, 69, 72, 73, …
Règle de pluriel n°7 (3 formes)
Familles : slaves (croate, serbe, russe, ukrainien)
se termine par 1, sauf 11 : 1, 21, 31, 41, 51, 61, 71, 81, 91, 101, 121, 131, 141, 151, 161, 171, 181, 191, 201, 221, 231, 241, 251, 261, 271, 281, 291, …
se termine par 2-4, sauf 12-14 : 2, 3, 4, 22, 23, 24, 32, 33, 34, 42, 43, 44, 52, 53, 54, 62, 63, 64, 72, 73, 74, 82, 83, 84, 92, 93, 94, 102, 103, 104, 122, 123, 124, 132, 133, 134, 142, 143, 144, 152, 153, 154, 162, 163, 164, 172, 173, 174, 182, 183, …
tout le reste : 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 25, 26, 27, 28, 29, 30, 35, 36, 37, 38, 39, 40, 45, 46, 47, 48, 49, 50, 55, 56, 57, 58, 59, 60, 65, 66, 67, 68, 69, 70, 75, 76, 77, …
Règle de pluriel n°8 (3 formes)
Familles : slaves (slovaque, tchèque)
pour 1 : 1
pour 2-4 : 2, 3, 4
tout le reste : 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, …
Règle de pluriel n°9 (3 formes)
Familles : slaves (polonais)
pour 1 : 1
se termine par 2-4, sauf 12-14 : 2, 3, 4, 22, 23, 24, 32, 33, 34, 42, 43, 44, 52, 53, 54, 62, 63, 64, 72, 73, 74, 82, 83, 84, 92, 93, 94, 102, 103, 104, 122, 123, 124, 132, 133, 134, 142, 143, 144, 152, 153, 154, 162, 163, 164, 172, 173, 174, 182, 183, …
tout le reste : 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 25, 26, 27, 28, 29, 30, 31, 35, 36, 37, 38, 39, 40, 41, 45, 46, 47, 48, 49, 50, 51, 55, 56, 57, 58, 59, 60, 61, 65, 66, 67, 68, …
Règle de pluriel n°10 (4 formes)
Familles : slaves (slovène, sorabe)
se termine par 01 : 1, 101, 201, …
se termine par 02 : 2, 102, 202, …
se termine par 03-04 : 3, 4, 103, 104, 203, 204, …
tout le reste : 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, …
Règle de pluriel n°11 (5 formes)
Familles : celtiques (gaélique irlandais)
pour 1 : 1
pour 2 : 2
pour 3-6 : 3, 4, 5, 6
pour 7-10 : 7, 8, 9, 10
tout le reste : 0, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, …
Règle de pluriel n°12 (4 formes)
Familles : sémitiques (arabe)
pour 1 : 1
pour 2 : 2
pour 0 ou 3-10 : 0, 3, 4, 5, 6, 7, 8, 9, 10
tout le reste : 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, …
Règle de pluriel n°13 (4 formes)
Familles : sémitiques (maltais)
pour 1: 1
pour 0 ou se termine par 01-10 : 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, …
se termine par 11-19 : 11, 12, 13, 14, 15, 16, 17, 18, 19, 111, 112, 113, 114, 115, 116, 117, 118, 119, 211, 212, 213, 214, 215, 216, 217, 218, 219, …
tout le reste : 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, …
Règle de pluriel n°14 (3 formes)
Familles : slaves (macédonien)
se termine par 1 : 1, 11, 21, 31, 41, 51, 61, 71, 81, 91, 101, 111, 121, 131, 141, 151, 161, 171, 181, 191, 201, 211, 221, 231, 241, 251, 261, 271, 281, 291, …
se termine par 2 : 2, 12, 22, 32, 42, 52, 62, 72, 82, 92, 102, 112, 122, 132, 142, 152, 162, 172, 182, 192, 202, 212, 222, 232, 242, 252, 262, 272, 282, 292, …
tout le reste : 0, 3, 4, 5, 6, 7, 8, 9, 10, 13, 14, 15, 16, 17, 18, 19, 20, 23, 24, 25, 26, 27, 28, 29, 30, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 56, 57, 58, 59, 60, 63, …
Exemples
Suivent quelques exemples pour diverses langues et une brève explication du processus.
Français
Dans certaines régions francophones, le zéro est traité comme un pluriel alors que dans d'autres c'est un singulier. Le seul autre singulier est 1 alors que tout le reste est au pluriel. Choisissez donc la règle de pluriel n°1 ou n°2.
pluralRule=2
seconds=seconde;secondes
minutes=minute;minutes
hours=heure;heures
days=jour;jours
Comme souvent lorsque vous localisez des mots, l'accord en genre peut vous forcer à réarranger les mots de manière à ce que le genre soit toujours identique (seconde est féminin alors que jour est masculin).
Chinois
Un mot ne change pas s'il est précédé d'un nombre, donc tous les nombres utilisent la même forme plurielle. Comme il n'y a qu'une seule forme il s'agit de la règle de pluriel n°0. Pour chaque mot à localiser, il n'y a que ce mot à préciser, sans qu'il soit nécessaire d'ajouter des points-virgules.
pluralRule=0
seconds=秒
minutes=分
hours=時
days=日
Polonais
Il existe une forme de singulier pour 1, une forme plurielle pour 2-4, et une autre pour 5-21. À partir de là, 22 est la même forme que 2. La règle de pluriel n°7 a bien « se termine par 2-4, sauf 12-14 », mais la forme du singulier comprend tout ce qui se termine par 1 à part 11. La règle n°9 est donc préférable puisqu'elle a correctement la forme au singulier pour 1 uniquement.
pluralRule=9
seconds=sekunda;sekundy;sekund
minutes=minuta;minuty;minut
hours=godzina;godziny;godzin
days=dzień;dni;dni
Bien que les deux dernières formes plurielles de « days » soient les mêmes, elles sont toutes deux nécessaires car il doit y avoir trois formes plurielles pour chaque mot.
Sorabe
Quatre formes plurielles existent : nominatif singulier, nominatif double, nominatif pluriel, génitif pluriel. Ceci correspond à la règle de pluriel n°10.
pluralRule=10
seconds=sekunda;sekundźe;sekundy;sekundow
minutes=mjeńšina;mjeńšinje;mjeńšiny;mjeńšin
hours=hodźina;hodźinje;hodźiny;hodźin
days=dźeń;dnjej;dny;dnjow
Extension de test
Pour vous assurer de choisir la bonne règle de pluriel et fournir suffisamment de formes plurielles pour une chaîne, utilisez l'extension pluralForm Checker. Après son installation, elle devrait être accessible depuis le menu Outils.
Pour l'utiliser, remplissez la liste des fichiers properties et des chaînes à vérifier et cliquez sur le bouton. L'extension chargera chaque chaîne et affichera les formes plurielles dans un tableau. La sélection d'une entrée du tableau remplira la boîte inférieure avec des exemples d'utilisation du mot pour certains nombres.
Installation de l'extension pluralForm Checker v0.3
Entrées pour l'extension
Cette liste devrait être maintenue pour contenir tous les mots nécessitant des formes plurielles. Les utilisateurs de l'extension pourront alors copier-coller cette entrée.
chrome://mozapps/locale/downloads/do...tes,hours,days
chrome://mozapps/locale/downloads/do...dsTitlePercent
chrome://browser/locale/browser.prop...ausedDownloads
Historique des versions
0.1 : Version initiale avec vérification de pluralRule, chargement de properties en entrée, génération de tableaux, exemple d'affichage en sortie
0.2 : Utilisation de PluralForm.numForms() pour obtenir le nombre de formes au lieu d'essayer de le déterminer localement afin de mieux gérer les futures règles — nécessite une compilation ultérieure à 2007-01-27
0.3 : Génération d'une liste des nombres tombant dans chaque forme plurielle afin de réduire la sortie d'exemples à 3 par forme tout au plus
Développement avec PluralForm
La fonctionnalité permettant d'obtenir les formes plurielles correctes est fournie par un module JavaScript, <tt>PluralForm.jsm</tt>. Ce module fournit un ensemble de méthodes pour la localisation vers la locale courante du navigateur ainsi que pour localiser en utilisant la règle de pluriel désirée. Cette dernière possibilité de spécifier une règle de pluriel est utile pour les extensions car celles-ci ne devront pas nécessairement être localisées dans la même locale que le navigateur.
Chargement de <tt>PluralForm.jsm</tt>
Le chargement du module PluralForm depuis JavaScript est simple avec Components.utils.import. Placez simplement la ligue qui suit à un endroit quelconque qui sera évalué avant d'utiliser PluralForm. Par exemple en haut de votre fichier JavaScript.
Components.utils.import("resource://gre/modules/PluralForm.jsm");
Les méthodes <tt>get</tt> et <tt>numForms</tt>
Ces méthodes utilisent la locale courante du navigateur spécifiée par la valeur <tt>pluralRule</tt> de <tt>chrome://global/locale/intl.properties</tt>.
/** * Obtient la forme plurielle correcte d'un mot basée sur le nombre * * @param aNum * Le nombre pour lequel décider de la forme plurielle à utiliser * @param aWords * Une chaîne séparée par des points-virgules (;) composée des mots pour lesquels obtenir la forme plurielle * @return La forme plurielle appropriée pour le mot */ string pluralForm get(int aNum, string aWords)
/** * Obtient le nombre de formes pour la règle de pluriel courante * * @return The number of forms */ int numForms numForms()
Voici un exemple d'utilisation de ces méthodes :
// Chargement de PluralForm et pour cet exemple, utilisation du français Components.utils.import("resource://gre/modules/PluralForm.jsm"); // PluralForm.get attend une liste de mots séparés par des points-virgules let forms = "forme;formes"; // On va choisir la forme plurielle correcte selon le nombre suivant let numForms = PluralForm.numForms(); // Affiche la forme plurielle correcte pour « formes » print("Cette locale a " + numForms + " " + PluralForm.get(numForms, forms) + ".");
L'exemple ci-dessus fonctionne, mais est toujours difficile à localiser parce qu'on concatène des chaînes en présupposant une structure grammaticale particulière. Le code suivant serait préférable :
Components.utils.import("resource://gre/modules/PluralForm.jsm"); let forms = "Cette locale a une forme.;Cette locale a #1 formes."; let numForms = PluralForm.numForms(); // Pour le français, ceci afficherait « Cette locale a 2 formes. » print(PluralForm.get(numForms, forms).replace("#1", numForms);
Remarquez dans l'exemple qui précède que le code peut être écrit pour gérer des remplacements ou non dans certaines formes de la chaîne. De plus, le localiseur a le contrôle sur la position du remplacement par rapport au reste du texte.
Bien sûr, les chaînes à localiser seront placées dans un fichier séparé comme monextension.properties au lieu d'être codées en dur dans le fichier de code JavaScript.
Les trois extraits de fichiers suivants montrent comment utiliser PluralForm avec des fichiers <tt>.xul</tt>, <tt>.properties</tt> et <tt>.js</tt>.
<tt>downloads.xul</tt> :
<stringbundleset> <stringbundle id="strings" src="chrome://downloads.properties"/> </stringbundleset>
<tt>downloads.properties</tt> en anglais :
# LOCALIZATION NOTE (downloadsTitleFiles): Semi-colon list of plural forms. # See: https://developer.mozilla.org/en/docs/Localization_and_Plurals # #1 number of files # example: 111 files - Downloads downloadsTitleFiles=#1 file - Downloads;#1 files - Downloads # LOCALIZATION NOTE (timePair): #1 time number; #2 time unit # example: 1 second; 11 seconds timePair=#1 #2 seconds=second;seconds
<tt>downloads.properties</tt> en français :
# LOCALIZATION NOTE (downloadsTitleFiles): Semi-colon list of plural forms. # See: https://developer.mozilla.org/en/docs/Localization_and_Plurals # #1 number of files # example: 111 files - Downloads downloadsTitleFiles=#1 fichier - Téléchargements;#1 fichiers - Téléchargements # LOCALIZATION NOTE (timePair): #1 time number; #2 time unit # example: 1 second; 11 seconds timePair=#1 #2 seconds=seconde;secondes
<tt>downloads.js</tt> :
Components.utils.import("resource://gre/modules/PluralForm.jsm"); let getStr = function(string) document.getElementById("strings").getString(string); // Get the correct plural form for the title let numDownloads = 3; let title = PluralForm.get(numDownloads, getStr("downloadsTitleFiles")); // Put in the correct number of downloads print(title.replace("#1", numDownloads)); // Get the correct plural form of seconds let timeLeft = 55; let seconds = PluralForm.get(timeLeft, getStr("seconds")); // Print the localized string for "55 seconds" print(getStr("timePair").replace("#1", timeLeft).replace("#2", seconds));
La méthode <tt>makeGetter</tt>
Si vous écrivez une extension, vous voudrez utiliser <tt>makeGetter</tt> au lieu de <tt>PluralForm.get()</tt> ou <tt>PluralForm.numForms()</tt> parce qu'il utilisateur installant l'extension dans une locale différente utiliserait les chaînes fournies par la locale par défaut de votre extension. Par exemple, votre extension localisée pour l'anglais avec la règle de pluriel #1, qui attend deux formes plurielles, est installée sur une version de Firefox avec la règle de pluriel #4, qui attend trois formes.
/** * Crée une paire de fonctions de formes plurielles pour le numéro de règle de pluriel donné. * * @param aRuleNum * Le numéro de règle de pluriel pour lequel créer des fonctions * @return Une paire : [fonction qui récupère la forme plurielle correcte, * fonction qui renvoie le nombre de formes plurielles] */ [string pluralForm get(int aNum, string aWords), int numForms numForms()] makeGetter(int aRuleNum)
Voici un exemple d'utilisation de <tt>makeGetter</tt> :
Components.utils.import("resource://gre/modules/PluralForm.jsm"); // Utilisons le gaélique irlandais (règle de pluriel #11) let [get, numForms] = PluralForm.makeGetter(11); // Fabriquons quelques valeurs à utiliser avec « get » let dummyText = "form 1;form 2;form 3;form 4;form 5"; let dummyNum = 10; // Dans le cas du gaélique irlandais, la valeur 10 utilise la forme plurielle #4, ainsi « form 4 » est affiché print(get(dummyNum, dummyText));
Dans cet exemple, la règle de pluriel du gaélique irlandais était codée en dur, mais elle pourrait être une valeur spécifiée dans le fichier .properties. Donc, pour votre extension, spécifiez une valeur de pluralRule dans le fichier .properties et appelez <tt>PluralForm.makeGetter(pluralRuleFromProperties)</tt> en vous assurant de sauvegarder les deux fonctions renvoyées. (Vous pouvez utiliser l'assignation déstructurante de JavaScript 1.7 pour plus de clarté.) Les fonctions renvoyées se comportent tout à fait comme <tt>PluralForm.get()</tt> et <tt>PluralForm.numForms()</tt> sauf qu'elles utilisent la règle de pluriel spécifiée plutôt que la règle de pluriel par défaut.
Crédits
Le code de formes plurielles a été implémenté pour la première fois pour le bug 394516 — Figure out a remaining-time rounding scheme for minutes -> hours/days
Les règles de pluriel et leurs familles sont dérivées de la documentation de GNU <tt>gettext</tt>.