Designing Internationalization Architecture

1. Designing Multi-Language Support

ElementDetail
Locale tagBCP 47 (en-US, zh-Hant-TW)
Resource bundlesPer-locale message files
ICU MessageFormatPluralization, gender, select
Fallback chainfr-CA → fr → en
Librariesi18next, FormatJS, gettext, ICU4J

2. Designing Translation Management System

ToolDetail
Lokalise / Phrase / Crowdin / TransifexSaaS TMS
Source of truthMaster language (usually en)
WorkflowExtract → translate → review → import
In-context editingTranslators see UI
VersioningTrack keys per release

3. Designing Locale-Specific Formatting

TypeDetail
Number1,234.56 vs 1.234,56
DateMDY / DMY / YMD; Intl.DateTimeFormat
CurrencySymbol position, code
CalendarGregorian, Hijri, Buddhist
Sort orderLocale collation (Intl.Collator)

4. Designing Currency Conversion

AspectDetail
Source ratesECB, OpenExchange, providers
Cache + refreshDaily for display
Lock at txnDon't recompute later
RoundingPer-currency minor units
Display vs settleDifferent policies

5. Designing Time Zone Management

PracticeDetail
Store UTCAlways
Store original TZFor events tied to location
IANA names"America/Los_Angeles"
DSTLibrary-handled
tzdata updatesKeep current

6. Designing RTL Language Support

AspectDetail
dir="rtl"HTML attribute
Logical CSSmargin-inline-start vs margin-left
Mirror iconsDirectional only
Bidi textUse Unicode markers
TestPseudo-locale ar-XB

7. Designing Content Localization

ElementDetail
Marketing copyPer-locale variants
Images / videoCulturally appropriate
Legal textJurisdiction-specific
Email templatesPer-locale
Headless CMSContentful, Sanity, Strapi

8. Designing Regional Compliance

RegulationDetail
GDPR (EU)Consent, data rights
CCPA / CPRA (CA)Opt-out of sale
LGPD (BR)Brazilian privacy
PIPL (CN)China data localization
Data residencyPer-region storage

9. Designing Unicode Support

PracticeDetail
UTF-8 everywhereStorage, transport
DButf8mb4 (MySQL); UTF8 (PG)
NormalizationNFC for storage; NFKC for compare
LengthBytes vs codepoints vs graphemes
EmojiMulti-codepoint sequences

10. Designing Multi-Region Content Delivery

StrategyDetail
CDN per localeVary on Accept-Language
URL-based/en/, /es/, en.example.com
hreflang tagsSEO for alternate languages
Edge personalizationGeo + locale at edge

11. Designing Language Detection

SourceDetail
User preferenceHighest priority
URL path / subdomainExplicit
Accept-Language headerBrowser hint
Geo IPLast resort; allow override
Persist choiceCookie / profile

12. Designing Pluralization Handling

AspectDetail
CLDR ruleszero/one/two/few/many/other
ICU MessageFormat"{count, plural, one {# item} other {# items}}"
Avoid concat"You have " + n + " items"
Gender-aware"select" in ICU