Going global: implementing localization in modern web apps
Why retrofitting i18n is one of the most expensive refactors you can do, and how to avoid it from day one. Concrete patterns for URLs, slugs, content, emails, and invoice templates.
We learned the hard way that localization is not a feature you bolt on later — it is an architectural decision you commit to from the first migration.
This post walks through the five layers of i18n we now treat as non-negotiable: UI strings, content slugs, per-locale URLs, email templates, and invoice formatting. The cost of getting any one wrong is a multi-month refactor.