You ship the same app to several customers, and each wants different wording in a few places. Forking the whole string file is how that becomes unmaintainable by the third contract.
Fix a typo and you fix it three times. Add a locale and you translate 12,546 strings instead of 4,182. Nobody remembers which client changed what.
Fix the typo once. New locales translate 4,182 strings. Every override is visible, attributed and revertible.
A cell you haven't touched in a variant reads through to the default, live. Touch it and it detaches — visibly.
You get every key immediately, all inheriting. Nothing is duplicated in storage or in your translation bill.
Add a key to the default and every variant has it the same second, translated once.
Nordbank can override the German string and inherit the French one on the same key.
Its apps fall back to the default on the next pull. Overrides stay in history for 90 days.
Same API shape, different project id. Point the client's build at theirs and nothing else changes.
Invite the client's reviewer to their project only. They never see your default or other customers.
A bank resells your app under its own brand. Product names, support contacts and legal wording change; the rest doesn't.
One jurisdiction demands specific disclosure language. Override those 30 keys for that region's build only.
Run a formal and a casual variant side by side without branching your codebase.