✦ React i18n built for South Asia

i18n that actually understands
हिन्दी, বাংলা, اردو & 11 more

Auto RTL switching for Urdu. ₹12,34,567 instead of $1,234,567. Native digit rendering. Right Google Font for every script. CLDR plurals where Hindi correctly treats 0 as singular. All in 4 lines of setup.

Get started → View on GitHub
# install
npm install bhasha-js

# wrap your app
import { I18nProvider, useTranslation, LanguageSwitcher } from "bhasha-js";

function App() {
  return (
    <I18nProvider projectKey="bjs_..." defaultLang="en">
      <LanguageSwitcher />
      <YourPage />
    </I18nProvider>
  );
}
14
Languages
~1.8B
Speakers covered
CLDR
Plural rules
MIT
Open source

Why a separate library?

Generic i18n tools like i18next are technically language-agnostic. They support Hindi the same way they support German. That isn't enough.

i18next / react-intl bhasha-js
Auto RTL switchManual setupAutomatic for Urdu
Script-aware fontsYour problemAuto-loads correct Google Font
Lakh/crore groupingGeneric Intl12,34,567 not 1,234,567
Native digitsManual१२,३४,५६७ / ১২,৩৪,৫৬৭ / ௧௨,௩௪,௫௬௭
Plural rulesConfigure eachBuilt-in CLDR for 14 languages
Fallback chainlanguage → EnglishBengali → Hindi → English (culturally aware)
CurrencyYour problemRegion-aware: ₹ for IN, ৳ for BD, Rs for PK
South Asian focusGenericPurpose-built, 14 languages pre-configured

Everything South Asian apps actually need

Wrap your app in <I18nProvider> once. The rest happens automatically.

→ Auto RTL switching

Switch to Urdu and the entire layout flips. <html dir="rtl"> set automatically. Switch to Hindi, it flips back. Zero config.

→ Right font for every script

Hindi gets Noto Devanagari. Tamil gets Noto Tamil. Urdu gets Noto Nastaliq. Loaded on demand, exposed as --bhasha-font.

→ Lakh/crore + native digits

formatNumber(1234567, "hi")12,34,567
with useNativeDigits१२,३४,५६७
compact: true15 लाख

→ Region-aware currency

Bengali in India? . Bengali in Bangladesh? . Tamil in Sri Lanka? Rs (LKR). One region prop.

→ Plurals that actually work

English: 0 items (plural). Hindi: 0 आइटम (singular). bhasha-js gets this right via CLDR — and applies the correct rule for all 14 languages automatically.

→ Culturally-aware fallbacks

Bengali key missing? Falls back to Hindi, then English. Tamil key missing? Skips Hindi entirely (different language family) and goes to English.

→ AI translation, dashboard, team review

Sign up for the hosted version, paste your English strings, and one-click translate to Hindi/Bengali/Urdu/Tamil/etc. Translators on your team can review/approve.

→ Self-host for free

Don't want a SaaS? docker compose up and run the whole stack on your own infra. Same SDK, your URL.

Three ways to install

Same API. Pick the one that fits your project — switch later if needed.

Mode 1 — Bundled

No backend, 30 seconds

Drop in your translation JSON. Get RTL + fonts + lakh/crore + plurals for free.

<I18nProvider
  preloadedTranslations={json}
  defaultLang="en">
  <App />
</I18nProvider>
Mode 2 — Hosted ★

Dashboard + AI

Sign up, create a project, paste API key. Manage translations in a UI with AI + team review.

<I18nProvider
  projectKey="bjs_..."
  defaultLang="en">
  <App />
</I18nProvider>
Mode 3 — Self-hosted

Run it yourself

Open source. docker compose up on your VPS. Point the SDK at your URL.

<I18nProvider
  projectKey="bjs_..."
  apiUrl="https://i18n.you.com">
  <App />
</I18nProvider>

14 languages, one library

Every script pre-configured. Native names render with the correct font even on this page.

हिन्दी বাংলা اردو தமிழ் తెలుగు मराठी ગુજરાતી ಕನ್ನಡ മലയാളം नेपाली ਪੰਜਾਬੀ සිංහල English
See full language details →

Ship South Asian i18n today

Free to start. Open source. No credit card.

Sign up free Read the quickstart