Skip to content

[i18n] Additional Languages Support #2

@juliolmuller

Description

@juliolmuller

feat(i18n): add support for additional languages to expand WhatsApp user coverage

Summary

The application currently supports pt-BR, en, and es, which covers a strong base in Brazil, English-speaking markets, and Latin America. However, analysis of the top 20 countries by WhatsApp user concentration reveals significant untapped audiences speaking other languages. This issue proposes a prioritized roadmap for adding new locales to maximize reach among the platform's actual user base.

Context & motivation

WhatsApp has over 3.3 billion monthly active users across 180+ countries. Our current three locales address approximately 500–530 million potential users. By adding the languages below — ranked by estimated WhatsApp speaker population — we could expand addressable coverage to well over 1.5 billion users.

The table below summarizes the opportunity by language, derived from WhatsApp user counts in the top 20 countries crossed with speaker distribution data:

Priority Locale Language Est. WhatsApp speakers Key countries
🔴 High hi Hindi ~215M India
🔴 High id Indonesian ~100M Indonesia
🔴 High ru Russian ~66M Russia
🔴 High tr Turkish ~60M Turkey
🟡 Medium ar Arabic ⚠️ RTL ~58M+ Egypt + Gulf countries
🟡 Medium de German ~42M Germany
🟡 Medium ur Urdu ⚠️ RTL ~42M Pakistan
🟡 Medium bn Bengali ~55M India
🟡 Medium it Italian ~38M Italy
🟢 Lower fr French ~22M France + Francophone Africa
🟢 Lower te Telugu ~37M India
🟢 Lower mr Marathi ~37M India
🟢 Lower ta Tamil ~32M India

Numbers are estimates based on WhatsApp country user counts × speaker share per country (2024–2025 data). Arabic and Urdu figures exclude Gulf countries not in the top-20 dataset, so real totals are likely higher.

Proposed implementation approach

Phase 1 — High-priority, Latin-script languages (hi, id, ru, tr)

These add massive coverage with no layout engine changes required (all use Latin or Cyrillic/Devanagari scripts rendered LTR).

  • Add hi.json translation file (Devanagari script, LTR)
  • Add id.json translation file (Latin script, LTR)
  • Add ru.json translation file (Cyrillic script, LTR)
  • Add tr.json translation file (Latin script, LTR)
  • Update locale switcher UI to include new options
  • Update i18n configuration to register new locales

Phase 2 — RTL languages (ar, ur)

Arabic and Urdu require right-to-left layout support. Before adding translation files, the app's layout system must handle RTL direction correctly.

  • Audit CSS/layout for RTL compatibility (check flex-direction, text-align, margin/padding directional values)
  • Add dir="rtl" switching to the root <html> element based on active locale
  • Consider CSS logical properties (margin-inline-start instead of margin-left, etc.) for cleaner RTL support
  • Add ar.json translation file
  • Add ur.json translation file

Phase 3 — Remaining Indian languages and French (bn, it, fr, te, mr, ta)

  • Add translation files for bn, it, fr, te, mr, ta
  • Verify font rendering for scripts that may require specific typefaces (Bengali, Telugu, Tamil)

Translation strategy

A few options to consider for sourcing translations:

  1. Community contributions — open a call for native-speaker contributors via a dedicated discussion thread. Works well for widely spoken languages like Hindi and Arabic.
  2. Professional translation service — recommended for Phase 1 and RTL languages where accuracy is critical.
  3. Machine translation + native review — faster to bootstrap, but requires a review pass before shipping.
    Whichever approach is chosen, a translation review checklist per locale would help maintain quality:
  • All existing string keys translated (no fallback to English in production)
  • Pluralization rules handled correctly (especially for languages with complex plural forms like Russian and Arabic)
  • Date, number, and currency formats localized (use Intl API where possible)
  • WhatsApp-specific terminology reviewed by someone familiar with the app in that language

Acceptance criteria

  • Each new locale is selectable from the locale switcher
  • No untranslated strings fall back to English in production for a given locale
  • RTL locales (ar, ur) render the layout correctly mirrored
  • Automated tests cover locale loading for each new locale
  • The README or contributing guide is updated to document how to add a new locale

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew minor or major features.

    Type

    No fields configured for Task.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions