Design Pluralization and Dynamic Copy
Content & UX Writing · microcopy, internationalization
Updated 2026-07-28
- Never build a sentence by joining fragments. Concatenation produces "1 items" and makes translation impossible, because word order is not the same everywhere.
- Keep each message as one complete string with named values inside it. Translators need the whole sentence to get the grammar right.
- Handle the counts that need different wording:
- Zero, which usually reads better as words than as a number.
- One, which needs the singular.
- Many, which needs the plural.
- Very large numbers, which may need abbreviating.
- Do not assume two plural forms. Several languages have more, and a few have none, so let the formatting layer decide rather than an if statement in the component.
- Write for the value being unknown as well as being zero. "No results" and "Results not loaded" are different states and must not share a string.
- Avoid clever sentences that break under substitution. Copy that reads well with a short name often falls apart with a long one, and worse with an empty one.
- Give every dynamic string a maximum. Names, titles, and free text from users will be longer than you expect, and a message that cannot wrap will overflow.
- Show the values in context when reviewing copy. A string list is not a design review, because the problems appear when real names go into real layouts.
Dynamic copy is where content and engineering meet, and it fails silently in exactly the cases nobody demoed.
Related guides