How to translate your status page
Enable multiple languages on your status page and contribute new translations.
statusas status pages support multiple languages. You can configure which locales are available per page and set a default language. Visitors can switch between languages using a built-in locale switcher.
Note
Supported locales
Currently supported languages:
| Code | Language |
|---|---|
lt | Lietuvių |
en | English |
fr | Français |
de | Deutsch |
tr | Türkçe |
hi | हिंदी |
ko | 한국어 |
ja | 日本語 |
Enable translations on your status page
- Go to your dashboard and open the status page settings.
- Under Locales, select a default locale for your page.
- Check Enable locale switcher to allow visitors to switch languages.
- Select which languages you want to offer.
- Click Submit.
When the locale switcher is enabled, visitors will see a language dropdown on your status page. The default locale is omitted from the URL for cleaner paths (e.g., /status instead of /status/en), while non-default locales are included (e.g., /status/fr).
Translate your own text
Enabling a locale translates the page's own furniture — buttons, headings, "Operational", the dates. It cannot translate what you wrote: the name of a service, the title of an incident, the paragraph explaining a maintenance window. Those live next to the thing they describe, and you fill them in where you already edit it:
| What | Where |
|---|---|
| Page title and description | Status page → Edit → General → Translations |
| Component and group names | Status page → Components — the language button on each row |
| Monitor name and description | Monitor → General → Translations (used when a page has no override) |
| Status report title | the report sheet, under Translations |
| Status report update message | the update card, under Translations |
| Maintenance title and message | the maintenance sheet, under Translations |
A blank field is not a translation — it is the absence of one, and the visitor reads the original. So a half-finished page is never half-broken: it falls back sentence by sentence.
Which language a visitor gets is decided by the page, not by the browser. A reader who asks for German on a page that publishes only Lithuanian and English gets the page's default locale rather than a mixture.
Note
A page component's translation wins over the monitor's. Adding a monitor to a status page copies the monitor's translations across, and you can edit them per page afterwards — the same rule the public name already follows.
How routing works
statusas supports two routing modes for locales:
- Pathname routing (subdomains like
status.statusas.lt): the locale appears after the slug, e.g.,/status/fr/events. - Hostname routing (custom domains like
status.example.com): the locale is the first path segment, e.g.,/fr/events.
In both cases, the default locale is omitted from the URL (as-needed prefix strategy).
Contributing a new locale
Translations are open source. To add a new language:
1. Extend the locale registry
Add your locale to packages/locales/index.ts:
import type { Locale as DateFnsLocale } from "date-fns/locale";
import { de, enUS, fr, hi, ja, ko, lt, tr } from "date-fns/locale";
export const locales = ["lt", "en", "fr", "de", "tr", "hi", "ko", "ja"] as const;
// ...
export const localeDetails: Record<Locale, { name: string; flag: string }> = {
lt: { name: "Lietuvių", flag: "🇱🇹" },
en: { name: "English", flag: "🇺🇸" },
fr: { name: "Français", flag: "🇫🇷" },
de: { name: "Deutsch", flag: "🇩🇪" },
tr: { name: "Türkçe", flag: "🇹🇷" },
hi: { name: "हिंदी", flag: "🇮🇳" },
ko: { name: "한국어", flag: "🇰🇷" },
ja: { name: "日本語", flag: "🇯🇵" },
};
export const dateFnsLocales: Record<Locale, DateFnsLocale> = {
lt,
en: enUS,
fr,
de,
tr,
hi,
ko,
ja,
};2. Generate the translation file
Run the status page dev server:
pnpm dev:status-pageThe next-intl extraction plugin will automatically create a new apps/status-page/messages/<locale>.json file with all translation keys pre-populated from the source locale. You can then fill in the translations.
3. Send them to us
Once your translations are complete, send them to pagalba@statusas.lt. The locale becomes available to every status page after the next deployment.
Set Up the statusas Slack Agent
A step-by-step tutorial to install the statusas Slack agent and manage incidents directly from Slack
How to Use statusas React Widget
Add an statusas status widget to your React or Next.js app with the @statusas/react package as a React Server Component, or build your own with the typed fetch helper.