The real world is full of tradeoffs and I’ve seen people try to get minutia like this correct in convoluted contexts which actually broke the core application logic.
Given the limited time we can spend on things, supporting proper plurality falls below some of my other UI priorities like proper accessibility settings.
I don’t think plurality is bad, just low in the stack rank of things that matter.
Every code path is an opportunity for a bug that escapes validation. Plus this particular example doesn't work with i18n. It would be more complicated in that case.
You'll have to look up the way i18n frameworks work, but no the "(s)" is not worse. It is far better because it's a simple string that the framework can substitute without embedded business logic trying to manipulate the individual characters in a way that only works in one language.
Yeah, I'm with you. I've worked on several i18n frameworks, including ones for AAA game titles at Microsoft.
You can make pluralization work but the "(s)" is going to tend to work better.
And localization isn't just an opportunity for development bugs, localizers get things wrong too. Some non-English speakers mentioned to me that some translations are so bad, it's better to use the English version anyways.
Huh? "(s)", itself, only works in one language! Other languages (and even English, sometimes) don't always pluralize by appending lettters to the end of words, so the parenthesized suffix thing very regularly doesn't even work.
And who exactly is talking about "embedding" business logic in the i18n framework? Every serious framework I've used has supported placeholders, so at the application level you just select between singular and plural form and then the translation framework can handle arranging the words.
e.g. `items.length == 1 ? _t("%d item", items.length) : _t("%d items", items.length)` and then within your translation files you can specify translations that rearrange the phrase, like "<noun> %d" for languages where they are reversed.
(though usually of course, you would use much longer phrases, so that the translation is done in-context.)
Even English. Counting the top 5 winners of a competition, there's 5th place, 4th place, 3th place, 2th place, and of course, the winner... first place!
I’d like to think I do pluralization right, but sometimes it’s just that bit too time consuming because of an awkward internationalization issue or something so I don’t. There’s only so much polishing you can (or should) do before you ship. If I found that my team suddenly had a lot of time for cleaning up this kind of thing, I’d start worrying about job security tbh.
I agree; there's probably higher value UI work, or something that should be more important to you above this. Examples: Have you ever run your app at 500% in high contrast with no mouse or with a screen reader? What's the happy path for most popular workflows? How many layers bury them with options and edge cases? What language support are you missing?
Proverbs become eerie the longer you live. Almost like, woah, that one sentence was actually universally true? Well hot damn!
Keep neglecting these small things and you’ll see the level of unconstrained shit you will have unleashed onto the world. With enough of us doing so, we can take part in the great collective festival of mass garbage accumulation (aggregate all the paper cuts). The few neurotic types that lament over this are actually, believe it or not, the closest thing to a sewage system for the accumulation. As of 2025, shame as a utility, is a weak tool.
The modern website needs to be in MOMA with no explanation, just a small title that reads ‘Despair’ (Perhaps even ‘Futility’, or the more modern ‘There was an attempt’).
The real world is full of tradeoffs and I’ve seen people try to get minutia like this correct in convoluted contexts which actually broke the core application logic.
Given the limited time we can spend on things, supporting proper plurality falls below some of my other UI priorities like proper accessibility settings.
I don’t think plurality is bad, just low in the stack rank of things that matter.