bhashini_sdk 1.0.0 copy "bhashini_sdk: ^1.0.0" to clipboard
bhashini_sdk: ^1.0.0 copied to clipboard

Bhashini Flutter SDK — auto-translates any Flutter app into 22 Indian languages. Zero widget changes required. Works by walking the element tree and injecting translations directly into RenderParagrap [...]

Bhashini Flutter SDK #

Translate any Flutter app into 22 Indian languages — without changing a single widget.

The SDK walks the Flutter element tree, collects every Text string on screen, sends them to the Bhashini translation backend in batches, and mutates the RenderParagraph objects in-place. No setState, no rebuilds, no wrapper widgets.


Features #

  • Zero widget changes — works on existing apps as-is
  • 22 Indian languages — all IndicTrans2-supported languages
  • Auto-retranslation on screen navigation via NavigatorObserver
  • Progressive rendering — each chunk appears as it arrives
  • In-memory cache — subsequent visits to a screen are instant
  • Drop-in FAB — pre-built translate button with language picker

Installation #

dependencies:
  bhashini_sdk: ^1.0.0
flutter pub get

Setup #

1. Register your app on the Bhashini portal #

Go to the Bhashini developer portal and register your Android app. You will need:

Field Where to find it
Package name android/app/build.gradleapplicationId
Certificate fingerprint keytool -list -v -keystore your-release.jks → SHA-256 line

After registration you will receive a serviceId for use in step 2.

2. Initialise the SDK in main.dart #

void main() {
  WidgetsFlutterBinding.ensureInitialized();

  BhashiniSDK.init(
    baseUrl: 'https://mobile-plugin.bhashini.gov.in',
    serviceId: 'ai4bharat/indictrans-v2-all-gpu--t4/btp',
    packageName: 'com.example.myapp',
    certificateFingerprint: 'AB:CD:EF:12:34:...',   // SHA-256 of your signing cert
  );

  runApp(const MyApp());
}

3. Wire into MaterialApp — two lines #

MaterialApp(
  navigatorObservers: [BhashiniSDK.navigatorObserver], // detects screen changes
  home: Scaffold(
    floatingActionButton: const BhashiniFAB(),         // translate button
    body: const MyHomeScreen(),
  ),
)

That's the entire integration. The SDK handles everything else automatically.


How it works #

User taps FAB → language picker sheet
        ↓
User picks a language (e.g. Hindi)
        ↓
SDK walks the Flutter element tree
  element.visitChildren() on rootElement
        ↓
Collects all Text widget strings
        ↓
Sends batches of 25 to /mobile/translate-text
  with X-App-Package + X-App-Certificate headers
        ↓
Translations injected into RenderParagraph.text
  (no widget rebuild required)
        ↓
NavigatorObserver detects screen push/pop
  → re-translates new screen automatically

API reference #

BhashiniSDK.init() #

BhashiniSDK.init({
  required String baseUrl,            // backend URL
  required String serviceId,          // IndicTrans2 service ID
  String sourceLanguage = 'en',       // source language (default English)
  String? packageName,                // X-App-Package header
  String? certificateFingerprint,     // X-App-Certificate header
});

BhashiniSDK.setLanguage(SupportedLanguage) #

Programmatically set the translation language without showing the picker UI.

BhashiniSDK.restoreOriginal() #

Restore all text to the original English (or source language).

BhashiniSDK.navigatorObserver #

Add to MaterialApp.navigatorObservers to re-translate automatically on every screen change.

BhashiniFAB #

Drop-in FloatingActionButton. Shows a spinner while translating, a language/restore menu when already translated.

Scaffold(
  floatingActionButton: const BhashiniFAB(),
)

BhashiniSDK.instance.status #

BhashiniStatus enum: idle | loading | translated | error

BhashiniSDK.instance.onStateChanged #

Callback fired on every status change. Use to show custom loading indicators or error banners.

BhashiniSDK.instance.onStateChanged = () {
  if (BhashiniSDK.instance.status == BhashiniStatus.error) {
    showErrorSnackbar(BhashiniSDK.instance.lastError);
  }
};

Supported languages #

Code Language
as অসমীয়া (Assamese)
bn বাংলা (Bengali)
brx बड़ो (Bodo)
doi डोगरी (Dogri)
gu ગુજરાતી (Gujarati)
hi हिन्दी (Hindi)
kn ಕನ್ನಡ (Kannada)
ks كٲشُر (Kashmiri)
kok कोंकणी (Konkani)
mai मैथिली (Maithili)
ml മലയാളം (Malayalam)
mni মৈতৈলোন্ (Manipuri)
mr मराठी (Marathi)
ne नेपाली (Nepali)
or ଓଡ଼ିଆ (Odia)
pa ਪੰਜਾਬੀ (Punjabi)
sa संस्कृतम् (Sanskrit)
sat ᱥᱟᱱᱛᱟᱲᱤ (Santali)
sd سنڌي (Sindhi)
ta தமிழ் (Tamil)
te తెలుగు (Telugu)
ur اردو (Urdu)

License #

MIT — see LICENSE.

0
likes
150
points
83
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Bhashini Flutter SDK — auto-translates any Flutter app into 22 Indian languages. Zero widget changes required. Works by walking the element tree and injecting translations directly into RenderParagraph at runtime.

Homepage
Repository (GitHub)
View/report issues

Topics

#translation #localization #indian-languages #bhashini #nlp

License

MIT (license)

Dependencies

flutter, flutter_svg, http, shared_preferences

More

Packages that depend on bhashini_sdk