J'ai été scotché par ta remarque Frédéric, j'ai fait pas mal de traductions pour le projet GNOME (il y a longtemps) et je n'avais jamais vu le problème ! Depuis tout ce temps dans l'erreur, je suis aller faire un tour sur le gitlab de GNOME pour chercher des cas concrets.
Puis je me suis dit que le cas devait être très rare d'un pluriel sur un nombre décimal (les formes plurielles sont déjà rares dans les traductions) car les nombres décimaux sont souvent utilisés avec des unités.
J'étais justement en train de me demander si ngettext acceptait un double/float en C quand j'ai reçu la réponse de Bruno. Merci.
Utiliser un arrondi inférieur poserait certainement des problèmes pour les autres langues...
Avons nous des concrets de ce problème (le dev qui cast un float en long) ?
Il serait intéressant de noter cette information sur la règle française et la contrainte ngettext dans un guide de traduction en indiquant que la solution est de formuler la phrase autrement (un patch du code de l'app sera peut être nécessaire) mais de bien conserver la règle n>1 car AMHA la règle n>=2 laisse penser que le code est capable de gérer le cas décimal.
Stéphane
Bonjour Frédéric,
> > PS : j'ai laissé inchangé la définition du pluriel (n>1 me semble plus
> > simple que n>=2).
>
> C'est faux.
Vous avez raison tous les deux:
> Le pluriel en français est réellement appliqué quand n>=2. En français, 1.5
> est singulier. Voir par exemple https://www.druide.com/fr/enquetes/15-gramme-ou-15-grammes
Correct.
> Avec la règle n>1, les nombres décimaux entre 1 et 2 seront mis au pluriel.
Non, puisque la règle du pluriel n’est appliquée que pour des entiers:
La fonction ngettext prend un entier en argument. [1]
Gettext n’a simplement pas de support pour les pluriels avec argument
fractionnel.
Bruno
[1] https://www.gnu.org/software/libc/manual/html_node/Advanced-gettext-functions.html