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

  • Messages, plurals and translation-ready stringsBeginner · 28 min read · Sign in to read

    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.

  • Formatting numbers, money, dates and listsBeginner · 32 min read · Sign in to read

    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.

  • Right-to-left and text that won't fitIntermediate · 38 min read · Sign in to read

    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.

  • Choosing a locale and shipping itIntermediate · 28 min read · Sign in to read

    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.