Currently, GNOME’s translations for these four languages use 2 plural forms. It depends on the language but each one is either (e.g. Italian):
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
or (e.g. French):
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
The Unicode Common Locale Data Repository (CLDR) maintains a list of plural rules for different languages, and some time in early 2022 it was updated to state that these languages have 3 plural forms for cardinal numbers, not 2. The additional form is for round millions. Here are the (integer) examples given for French, but the others are similar:
one: 1 jour
many: 1 000 000 de jours, 1 M de jours
other: 2 jours
I don’t speak any of these languages, so back in May I checked this with colleagues who speak Spanish (European and Latin American) and (Brazilian) Portuguese. @danigm suggested starting a discussion about whether GNOME should follow CLDR and introduce a third plural form.
Two Brazilian colleagues who are not on this forum agreed that:
- “um milhão de dias” or “1 milhão de dias” for “one million days”.
- “1.000.000 de dias” looks odd, but maybe it’s not wrong just uncommon.
The immediate reason I am interested in this is that Endless OS uses Transifex to maintain our translations, including for GNOME modules where we have forks that introduce new translatable strings. Because GNOME and Transifex’s plural form rules now differ for these languages, GNOME’s translations for plural strings get lost on the round-trip through Transifex. GNOME Software, for example, has a bunch of strings for how long ago something occurred:
%d minute(s)
%d hour(s)
%d day(s)
%d week(s)
%d month(s)
%d year(s)
In these cases the new “many” / millions form is not going to make any practical difference: it is impossible for an app to have been released 1 million years ago, and Software will never fill a number higher than 59 minutes, 23 hours, 6 days, 3 weeks, or 11 months into any of the other strings. But I guess it’s possible that other GNOME modules might actually want to format a string which is a million of something.
(I’m not saying that GNOME’s translations should follow the same rules as Transifex to make my life easier!)