Roadmap

Multi-Language Interface

A translated UI so a school can run Notipa in the language its families actually speak, not just English.

Back to roadmap
Planned Not yet started — this page describes the intended design and build plan.

Overview

Notipa's interface is English-only today. Since it's meant to run anywhere a school, NGO, or ministry of education wants to self-host it, the UI chrome — buttons, labels, navigation, form fields, system messages — needs to be translatable, and a user needs to be able to pick their own language independent of everyone else using the same instance.

This is UI translation, not content translation: it makes the app itself usable in another language. It does not translate the actual text a teacher writes in an announcement or homework post — that content stays in whatever language the author wrote it in, same as any other software.

How it will work

Development plan

1String extraction & i18n scaffolding
  • Audit every template and UI-facing string in the Django app and wrap them with Django's translation tags ({% trans %} / gettext).
  • Set up the standard Django locale directory structure and message-file (.po/.mo) build process.
  • Add a language field to the user profile model, defaulting to the system/browser locale on first login.
2First translations
  • Ship with a small initial set of fully translated languages (candidates: Filipino/Tagalog, given the project's Philippines base, plus one or two widely-requested languages) as a proof that the pipeline works end to end.
  • RTL layout pass using one RTL language as a real test case, not just a checkbox.
3UI — language switcher
  • Language picker in account settings, applying immediately without requiring a logout.
  • Fallback behavior: any string missing from a translation file falls back to English rather than showing a raw translation key.
4Contribution workflow & testing
  • Document the process for adding a new language in the repository, so community contributors can submit translation files via pull request.
  • Visual regression pass across the app in each shipped language to catch overflow/truncation from longer translated strings.
  • QA the RTL layout specifically — form alignment, icon direction, navigation order.

Technical considerations