Skip to main content
JobCannon
All skills

Localization & Internationalization (i18n)

β¬’ TIER 3Industry
Medium
Salary impact
4 months
Time to learn
Medium
Difficulty
1
Careers
TL;DR

Localization (i18n) is the discipline of adapting software for international audiences: text translation, right-to-left layouts, date/time/currency formatting per locale, cultural design adaptation. Career path: Practitioner (string externalization, react-intl, $90-120k) β†’ Localization Engineer (TMS workflows, ICU MessageFormat, RTL, pluralization rules, $120-155k) β†’ Internationalization Lead (market selection, cultural adaptation, payment methods, compliance, $155-200k+) over 4-6 months. Tools: i18next, react-intl, FormatJS, Lokalise, Phrase. Opens access to 75% non-English internet. Airbnb 50%+ revenue outside US. Stripe supports 135+ currencies.

What is Localization & Internationalization (i18n)

Build multi-language, multi-region products. Translation, locale-aware formatting, cultural adaptation. Essential for global products (Stripe, Airbnb, Shopify). Learning Curve: Medium (technical + cultural awareness)

πŸ”§ TOOLS & ECOSYSTEM
i18nextreact-intlFormatJSICU MessageFormatCrowdinLokalisePhraseSmartlingTransifexLinguiWeblate

πŸ’° Salary by region

RegionJuniorMidSenior
USA$95k$140k$185k
UKΒ£55kΒ£85kΒ£120k
EU€60k€95k€135k
CANADAC$100kC$145kC$190k

🎯 Careers using Localization & Internationalization (i18n)

❓ FAQ

When should I start internationalization β€” at launch or after?
Start before launch if you plan global from day one. Build i18n from the beginning (string externalization, locale detection) at near-zero cost. Retrofitting is 5-10x harder: hardcoded strings scattered across components, RTL forgotten, pluralization rules ignored. Plan for i18n in your architecture, even if you don't ship other languages immediately.
What are the biggest RTL (Arabic, Hebrew) gotchas?
RTL is more than flipping layouts: text direction, number placement, currency symbols ($ after number in RTL), form field ordering, table column reversal, icon mirroring (arrows, checkmarks). Pseudo-localization testing is crucial β€” many apps only flip the layout and leave numbers/icons broken. Use CSS `direction: rtl` + logical properties (`margin-inline-start` not `margin-left`). Test with actual RTL languages, not just a reversed English string.
How do plural rules work across languages?
English: singular (1 item) vs plural (0, 2+ items). But Russian has 3 forms (1, 2-4, 5+ items). Arabic has 6 plural forms. ICU MessageFormat handles this: `{count, plural, one {1 item} other {# items}}`. Most i18n libraries (i18next, react-intl) use ICU plurals. Never write custom plural logic β€” it's locale-dependent and breaks.
Machine translation (Google Translate, DeepL) vs human translators β€” when do I use which?
Machine translation is 80% good for high-traffic, simple content (help text, buttons, notifications). Human translation is mandatory for brand voice, marketing copy, legal/compliance docs, culturally-sensitive content. Hybrid approach: MT for first draft + human review (cheaper than from-scratch). Test MT quality on 50-word samples before committing to full rollout.
Locale switcher UX β€” where should it live?
Footer or settings, never the hero. Most users don't switch languages frequently. Provide a fallback (detect browser language + allow manual override). Sticky choice across sessions via localStorage or user profile. Never auto-switch based on IP alone β€” VPN + expat users = wrong locale. Use hreflang to signal locale variants to search engines.
Currency and number formatting β€” how granular should it be?
Use Intl.NumberFormat (JavaScript) or locale libraries, never hardcode. US: 1,234.56. Germany: 1.234,56. India: 12,34,567. Currency symbols vary too: $USD, Β£GBP, €EUR (varies by country), β‚ΉINR, Β₯CNY/JPY. Don't just swap the symbol β€” use locale-aware Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).
SEO with multiple languages β€” how do I structure URLs and headers?
Use hreflang in HTML head and XML sitemap to signal alternate language versions: <link rel="alternate" hreflang="es" href="https://example.com/es/page"/>. Structure URLs by language: /en/page, /es/page, /fr/page (subdirectory) or subdomains (en.example.com). Each language version gets its own language tag in HTML (<html lang="es">). Don't mix languages on one page. Google Search Console: verify each language variant separately.

Not sure this skill is for you?

Take a 10-min Career Match β€” we'll suggest the right tracks.

Find my best-fit skills β†’

Find your ideal career path

Skill-based matching across 2,536 careers. Free, ~10 minutes.

Take Career Match β€” free β†’