Platform Engineering

Multi-Locale Is Cheap on Day One and Brutal on Day Nine Hundred

By the time expansion is approved, the expensive decisions were made years earlier by engineers who had no idea they were making them.

Nobody sets out to build a single-market platform. It happens through a long series of individually reasonable shortcuts, each taken when a second market was hypothetical and the deadline was not.

Then a second market is approved, and the bill arrives all at once.

The shortcuts that cost the most

Currency as a display concern. Prices stored as numbers, formatted at render. It works perfectly until a market needs different rounding rules, tax-inclusive display, or a currency with no minor unit — and by then the assumption is spread across hundreds of call sites.

Copy embedded in components. Extraction is mechanical but enormous, and it always surfaces sentences assembled from fragments — which do not survive translation into languages that order clauses differently.

Business rules that assume one market's shape. Address formats, phone validation, tax identifiers, delivery windows, business registration checks. Each encodes a local assumption in a place nobody labelled as local.

One catalogue, silently. The deepest one. If product identity assumes a single market's assortment, adding a second market means either forking the catalogue or restructuring the model that everything reads from.

The expensive part is never the translation. It is that market-specific logic gets distributed across the system as ordinary code, and nothing marks it as market-specific.

What is genuinely cheap to do early

Not full internationalisation — that is a real project and premature before you need it. But a few structural habits cost almost nothing in the first market and save a great deal in the second:

Shared platform, not a fork

When the second market arrives there is always pressure to fork — it looks faster, and for the first three months it is.

Then every feature has to be built twice, every fix applied twice, and the two codebases drift until they are separate products with a shared history. The cost does not scale linearly with markets; it compounds, because each divergence makes the next merge harder.

A shared multi-locale platform with per-market configuration is slower to reach the first launch and dramatically cheaper by the third. That trade is only obvious in hindsight, which is precisely why it needs to be argued for in advance, by someone whose job is the second-order cost.

The test worth applying early

Ask: if a second market were approved tomorrow, what could not be configured? The answer is your internationalisation backlog, and it is far cheaper to write down while it is still short.

← All writing Next: Incident Review Without the Blame Theatre →