Languages (i18n)¶
Prism's interface can be shown in a language other than English. Pick one under Settings → Appearance → Language; the choice is saved per install and applies to everyone using that dashboard.
English is always the fallback. Any string a translation hasn't covered yet renders in English rather than breaking or showing a raw key, so a partial translation is perfectly usable.
Status: in progress
Translation is being done in stages. The table below is the live picture of what is and isn't translated yet.
Available languages¶
| Language | Code | Maintainer |
|---|---|---|
| English | en |
built in (source language) |
| Deutsch | de |
community |
What's translated¶
| Area | Status |
|---|---|
| Navigation (sidebar, portrait nav, mobile nav) | ✅ done |
| Common actions (Save, Cancel, Delete, …) | ✅ keys ready |
| Birthdays widget | ✅ done |
| Calendar - views, toolbar, widget, add/edit event form | ✅ done |
| Chores — widget + page | ⬜ to do |
| Meals — widget + page | ⬜ to do |
| Messages — widget + page | ⬜ to do |
| Photos — widget + page | ⬜ to do |
| Shopping — widget + page | ⬜ to do |
| Tasks — widget + page | ⬜ to do |
| Travel — widget + page | ⬜ to do |
| Wishes — widget + page | ⬜ to do |
| Clock / Weather widgets | ✅ done |
| Points / Bus widgets | ⬜ to do |
| Settings pages | ⬜ to do |
| Setup wizard | ⬜ to do |
Widgets and their matching pages are translated together so the same wording is used in both places.
Dates, times and numbers¶
Dates and numbers already follow the selected language automatically — a German
dashboard shows 24. Dez. rather than Dec 24. That covers the order of
the parts as well as their names: a German calendar header reads
4. September 2026, not September 4, 2026. Day-first order isn't something a
translation file can express, so date labels are built from the language rather
than from a fixed pattern in the code.
12- vs 24-hour time is a separate setting, under Settings → General. It is deliberately independent of language, so you can run an English interface with a 24-hour clock or the reverse. Choosing Deutsch does not switch the clock for you.
Adding or correcting a translation¶
Translations are plain JSON files, one per language, in src/i18n/messages/.
No app code is involved and you cannot break the interface by editing them: any
key you leave out simply falls back to English.
To fix a wording or fill something in:
- Open
src/i18n/messages/de.json(or the file for your language) on GitHub. - Edit the value on the right of the colon. Leave the key on the left alone — that is what the app looks up.
- Open a pull request.
A first-time contributor is asked to sign the Contributor License Agreement automatically on their pull request. It is a one-line comment and only needs doing once.
Adding a whole new language¶
- Copy
src/i18n/messages/en.jsontosrc/i18n/messages/<code>.json. - Translate the values, leaving the keys untouched.
- Register it in
src/components/providers/LocaleProvider.tsx— import the file and add an entry toAPP_LOCALESwith the language's own name for itself (Deutsch, notGerman). - Open a pull request.
Partial translations are welcome. Untranslated keys fall back to English, so there is no need to finish a language before contributing it.