Overview
Your preferred language is stored on your user record as preferredLanguage (ISO 639-1 code). It's used in two places:
- The UI surface — strings, labels, navigation.
- AI responses — the doubt solver, writing coach, and study notes use this code to choose their output language.
Supported languages
| Code | Language | UI status | AI status |
|---|---|---|---|
en | English | Full | Full |
hi | Hindi | Full | Full |
te | Telugu | Partial | Full |
ta | Tamil | Partial | Full |
kn | Kannada | Partial | Full |
bn | Bengali | Partial | Full |
mr | Marathi | Partial | Full |
Changing your language
- Open Dashboard → Settings → Preferences, or click the language dropdown in the header.
- Pick the language. The change is saved immediately.
- The UI updates on the next page navigation; AI responses honour the new language on the next request.
The setting is a PATCH to /api/user/preferences with the single field preferredLanguage. The server validates it against the allow-list above and rejects unknown codes.
What changes when you switch
- UI strings — translated where available.
- Emails — system emails (verification, queued, live) are templated per language where translations exist.
- AI tutor chat (Aiden) — replies in your language.
- AI doubt solver — explanations in your language.
- AI study notes — generated in your language.
- Writing coach — feedback in your language; the analysed text stays in its original language.
What doesn't change: lesson content (the tutor wrote it), test questions (the question's own language), peer messages.
AI responses in your language
All AI-powered features pass your preferredLanguage as part of the system prompt. For example, the doubt solver passes:
solveDoubt({
question,
subject,
grade,
preferredLang: user.preferredLanguage ?? "en",
})Even if you write a question in English, the answer comes back in your selected language. You can override per-message by writing the question in another language — the model usually responds in the language you wrote in.