DocsAdministration

Internationalization Setup

Language picker on mobile, current language coverage, OptiCRM differences

OptiLearn ships an English + Hindi UI. Web and mobile use different translation stacks but the user-facing story is the same: pick a language, the entire UI flips. There's nothing to install or enable per institution — both languages are available out of the box.

Languages currently live

LanguageCodeWebMobile
EnglishenYesYes
HindihiYesYes

More languages will be added as translation budget permits — the engineering work to add a language is small (a JSON file on web, an ARB file on mobile) but each new bundle has to be translated, reviewed, and kept in sync.

How users switch language

Mobile

The language picker is always visible on the mobile Settings → Language screen. It's already wired and live — there is no admin toggle to enable it.

When a user picks a language:

  1. Selection is persisted to local storage
  2. The app rebuilds the MaterialApp with the new locale
  3. All Material widgets (date pickers, dialogs, snack bars) and app strings update

Web

The language switcher lives in the user menu in the header. Selecting a language sets the optilearn-locale cookie on the OptiLearn domain. The next page render uses the new bundle.

The cookie is scoped to OptiLearn's host — it does not leak to OptiCRM. OptiCRM has its own locale story (see below).

OptiCRM-side regional language story

OptiCRM's language story is separate from OptiLearn's:

  • OptiCRM translates a smaller surface — the UI an institution's staff and parents touch in the CRM
  • OptiCRM uses its own translation stack (different framework conventions)
  • The two cookies are intentionally independent — a parent can read OptiCRM in Hindi and OptiLearn in English (or vice versa) if they want

What this means for you as an admin:

  • A user's OptiCRM language choice does not propagate to OptiLearn
  • Users have to set the language in each app once
  • This is by design — the cookie scopes are different so a user can run a mixed setup

If your school wants every student-facing UI in one language, communicate that during onboarding and have students set both apps the first time they log in.

When more languages will become available

There's no published roadmap, but the typical request order is:

  1. Major regional Indian languages (Tamil, Telugu, Kannada, Marathi, Bengali) — partner institution demand drives prioritisation
  2. Other major world languages — only if a partnership requires them

The engineering side of adding a language is documented in the developer i18n reference. If you need a specific language for a deployment, raise it with the OptiLearn team — they can scope it from there.

Note

Adding a language is a one-time engineering + translation cost. Maintaining it is ongoing — every new feature ships English first, and other bundles need to catch up before each release.

What's translated

Both bundles cover:

  • Navigation labels and the dashboard
  • Course catalogue, lesson player, quiz / assignment UI
  • Notifications inbox and preferences page
  • Certificates, leaderboard, gamification
  • Parent dashboard
  • Mobile equivalents of all of the above

What's not yet translated:

  • Notification email templates (sent in English regardless of user's locale — system-default templates only have English)
  • Course content authored by instructors (text content, video captions, PDFs are author-controlled)
  • Admin / instructor settings pages (lower priority — staff are typically multilingual)

If you need translated email templates or instructor surfaces for a specific deployment, raise it with the OptiLearn team.

Verification

To check translations are loading correctly:

  1. Sign in to OptiLearn web on learn.opticrm.app
  2. User menu → Language → Hindi
  3. Reload — every nav label, button, and form field should switch
  4. Sign in to the mobile app
  5. Settings → Language → हिन्दी
  6. Same — entire UI flips

If any string stays in English, that key is missing from the Hindi bundle. Engineering can patch in the next release.