Non-functional requirements · One app, every language
Localization and i18n-style app
Illustrative system design for a one app, every language app like Localization and i18n: 4 topics to read, from requirements to deep dives.
Illustrative design, not Localization and i18n’s actual implementation. Arrowbox is not affiliated with Localization and i18n’s owner. Disclaimer
Start with Messages and plurals Sign in to start readingUpdated 2 Oct 2026
Core
Every user-visible string leaves the code as a keyed message with placeholders. Plurals, gender and word order differ by language, so the message format, not string concatenation, carries that logic.
Store and send neutral values (ISO timestamps, integer minor units, currency codes) and format them at the edge with Intl for the user's locale and time zone.
Arabic and Hebrew read right to left, German runs long and Japanese has no spaces. Build layouts with logical properties and direction-aware components, isolate user text, and never assume a string's length.
Decide the locale from an explicit choice first, then the URL, then Accept-Language, with a fallback chain; put it in the URL so it can be shared and indexed; and load only that locale's messages.