Why You Should Internationalize From Day One

Why You Should Internationalize From Day One

Retrofitting internationalization into an existing app costs 3-5x more engineering time than building it in from the start. A team with 2,000 hardcoded strings across 150 files will spend weeks extracting them. A team that used NSLocalizedString from day one spends zero extra time. This post explains what 'i18n from day one' looks like in practice.

The cost of waiting

Teams that wait until after launch spend 3-5x more engineering time than those that build it in from the start.

⚠️

Real-World Example

A startup had 2,000+ hardcoded strings across 150 Swift files. Extracting them took 3 developers 6 weeks. If they'd used NSLocalizedString from the start, it would have been zero additional effort.

Day-one i18n checklist

1

Use localization APIs for all user-facing strings

NSLocalizedString on iOS, getString() on Android, AppLocalizations in Flutter. Never hardcode text.

2

Use Auto Layout / Flexible layouts

Fixed-width containers break when text length changes. German is ~30% longer than English.

3

Externalize date/number/currency formatting

Use DateFormatter, NumberFormatter with the user's locale. Never manually format these.

4

Avoid string concatenation for sentences

Word order varies between languages. Use parameterized strings instead.

5

Support bidirectional text from the start

Use leading/trailing constraints instead of left/right. This gives you RTL support for free.

We internationalized our SwiftUI app from the first commit. When we launched in Japan 8 months later, localization took 2 days instead of 2 months.

Aiko Tanaka, CTO at TravelBuddy

FAQ

Does internationalization add overhead?

The runtime overhead is negligible - just a string table lookup. Development overhead is minimal if you start early.

What if I'm building an MVP?

Even for MVPs, wrapping strings in localization calls takes seconds per string and saves weeks later.

Stop managing translation files manually

LocaleKit detects, translates, and syncs all your localization files — iOS, Android, Flutter, and more. Everything runs locally on your machine.

Privacy-first. No cloud required.