Open vernacular infrastructure for India

Translate the interface.
Never the data.

Bhasha is a drop-in, zero-backend layer that makes any civic dashboard readable in Indian languages — while every number, place name and source stays exactly as published. Add it once; don't rebuild i18n per app.

Try it

Hit the 🌐 language button (lower-right) and switch to हिन्दी or ಕನ್ನಡ. Watch what changes — and what refuses to.

Bengaluru Updated just now
Air Quality (PM2.5)
182 µg/m³
poor
Temperature
34.2°C
Wet-bulb
28.1°C
Humidity
72%
What this means

Air quality is in the poor range today. People with asthma, older adults and children should limit time outdoors and keep windows closed in the afternoon.

Source: CPCB · Open-Meteo · fetched 21 Jul 2026
  • 🗣️
    The interface follows the reader. Labels, headings and guidance switch language.
  • 🔒
    The data doesn't move. 182 µg/m³, Bengaluru, 34.2°C and the CPCB source stay byte-for-byte as published — translating a sourced figure would break faithful presentation.
  • 📴
    Zero backend. Client-side, works offline, no account, nothing leaves the browser. Bundled Hindi + Kannada here; a machine fallback covers the long tail.

This card is a throwaway illustration — the point is the library driving it. See it on real dashboards below.

Integrate in three lines

Tag the UI text you want translatable, protect your data, and hand it a dictionary.

<!-- 1. tag UI text; protect data -->
<span data-bhasha>Air Quality</span>
<span class="bhasha-keep">182 µg/m³</span>   // never translated

<!-- 2. load + 3. init with your dictionary -->
<script src="bhasha.js"></script>
<script>
  Bhasha.init({ dict: {
    hi: { "Air Quality": "वायु गुणवत्ता" },
    kn: { "Air Quality": "ವಾಯು ಗುಣಮಟ್ಟ" }
  }});
</script>

Full API, opt-out mode, machine-translation + "ask in your language" adapters → the README.

Running on real dashboards

Not a toy — this is the reusable fix for the vernacular gap across a portfolio of India public-goods dashboards.