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.
# 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>
);
} 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 switch | Manual setup | Automatic for Urdu |
| Script-aware fonts | Your problem | Auto-loads correct Google Font |
| Lakh/crore grouping | Generic Intl | 12,34,567 not 1,234,567 |
| Native digits | Manual | १२,३४,५६७ / ১২,৩৪,৫৬৭ / ௧௨,௩௪,௫௬௭ |
| Plural rules | Configure each | Built-in CLDR for 14 languages |
| Fallback chain | language → English | Bengali → Hindi → English (culturally aware) |
| Currency | Your problem | Region-aware: ₹ for IN, ৳ for BD, Rs for PK |
| South Asian focus | Generic | Purpose-built, 14 languages pre-configured |
Wrap your app in <I18nProvider> once. The rest happens automatically.
Switch to Urdu and the entire layout flips. <html dir="rtl"> set automatically. Switch to Hindi, it flips back. Zero config.
Hindi gets Noto Devanagari. Tamil gets Noto Tamil. Urdu gets Noto Nastaliq. Loaded on demand, exposed as --bhasha-font.
formatNumber(1234567, "hi") → 12,34,567
with useNativeDigits → १२,३४,५६७
compact: true → 15 लाख
Bengali in India? ₹. Bengali in Bangladesh? ৳. Tamil in Sri Lanka? Rs (LKR). One region prop.
English: 0 items (plural). Hindi: 0 आइटम (singular). bhasha-js gets this right via CLDR — and applies the correct rule for all 14 languages automatically.
Bengali key missing? Falls back to Hindi, then English. Tamil key missing? Skips Hindi entirely (different language family) and goes to English.
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.
Don't want a SaaS? docker compose up and run the whole stack on your own infra. Same SDK, your URL.
Same API. Pick the one that fits your project — switch later if needed.
Drop in your translation JSON. Get RTL + fonts + lakh/crore + plurals for free.
<I18nProvider
preloadedTranslations={json}
defaultLang="en">
<App />
</I18nProvider> Sign up, create a project, paste API key. Manage translations in a UI with AI + team review.
<I18nProvider
projectKey="bjs_..."
defaultLang="en">
<App />
</I18nProvider> Open source. docker compose up on your VPS. Point the SDK at your URL.
<I18nProvider
projectKey="bjs_..."
apiUrl="https://i18n.you.com">
<App />
</I18nProvider> Every script pre-configured. Native names render with the correct font even on this page.
Free to start. Open source. No credit card.