How to translate your status page
openstatus 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 Translations are available on paid plans only. :::
Supported locales
Currently supported languages:
| Code | Language |
|---|---|
en | English |
fr | Français |
de | Deutsch |
tr | Türkçe |
hi | हिंदी |
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).
How routing works
openstatus supports two routing modes for locales:
- Pathname routing (subdomains like
status.openstatus.dev): 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, tr } from "date-fns/locale";
export const locales = ["en", "fr", "de", "tr", "hi"] as const;
// ...
export const localeDetails: Record<Locale, { name: string; flag: string }> = {
en: { name: "English", flag: "🇺🇸" },
fr: { name: "Français", flag: "🇫🇷" },
de: { name: "Deutsch", flag: "🇩🇪" },
tr: { name: "Türkçe", flag: "🇹🇷" },
hi: { name: "हिंदी", flag: "🇮🇳" },
};
export const dateFnsLocales: Record<Locale, DateFnsLocale> = {
en: enUS,
fr,
de,
tr,
hi,
};
2. Generate the translation file
Run the status page dev server:
pnpm dev:status-page
The 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. Submit a pull request
Once your translations are complete, submit a PR to the openstatus repository. The locale will become available to all status pages after the next deployment.