Skip to content

Commit 3d6e295

Browse files
authored
chore: status-page translations content (openstatusHQ#2001)
* chore: status-page translations content * chore: content
1 parent 7bea115 commit 3d6e295

File tree

7 files changed

+127
-0
lines changed

7 files changed

+127
-0
lines changed

apps/docs/astro.config.mjs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,10 @@ export default defineConfig({
153153
label: "Self host Status Page only",
154154
slug: "guides/self-host-status-page-only",
155155
},
156+
{
157+
label: "How to translate your status page",
158+
slug: "guides/how-to-translate-status-page",
159+
},
156160
],
157161
},
158162
{
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
---
2+
title: How to translate your status page
3+
description: Enable multiple languages on your status page and contribute new translations.
4+
---
5+
6+
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.
7+
8+
## Supported locales
9+
10+
Currently supported languages:
11+
12+
| Code | Language |
13+
|------|----------|
14+
| `en` | English |
15+
| `fr` | Fran\u00e7ais |
16+
| `de` | Deutsch |
17+
18+
## Enable translations on your status page
19+
20+
1. Go to your **Dashboard** and open the status page settings.
21+
2. Under **Locales**, select a **Default Locale** for your page.
22+
3. Check **Enable locale switcher** to allow visitors to switch languages.
23+
4. Select which languages you want to offer.
24+
5. Click **Submit**.
25+
26+
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`).
27+
28+
## How routing works
29+
30+
OpenStatus supports two routing modes for locales:
31+
32+
- **Pathname routing** (subdomains like `status.openstatus.dev`): the locale appears after the slug, e.g., `/status/fr/events`.
33+
- **Hostname routing** (custom domains like `status.example.com`): the locale is the first path segment, e.g., `/fr/events`.
34+
35+
In both cases, the default locale is omitted from the URL (`as-needed` prefix strategy).
36+
37+
## Contributing a new locale
38+
39+
Translations are open source. To add a new language:
40+
41+
### 1. Extend the locale registry
42+
43+
Add your locale to `packages/locales/index.ts`:
44+
45+
```ts
46+
export const locales = ["en", "fr", "de", "es"] as const;
47+
// ...
48+
export const localeDetails: Record<Locale, { name: string; flag: string }> = {
49+
en: { name: "English", flag: "\ud83c\uddfa\ud83c\uddf8" },
50+
fr: { name: "Fran\u00e7ais", flag: "\ud83c\uddeb\ud83c\uddf7" },
51+
de: { name: "Deutsch", flag: "\ud83c\udde9\ud83c\uddea" },
52+
es: { name: "Espa\u00f1ol", flag: "\ud83c\uddea\ud83c\uddf8" },
53+
};
54+
```
55+
56+
### 2. Generate the translation file
57+
58+
Run the status page dev server:
59+
60+
```bash
61+
pnpm dev:status-page
62+
```
63+
64+
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.
65+
66+
### 3. Submit a pull request
67+
68+
Once your translations are complete, submit a PR to the [OpenStatus repository](https://github.com/openstatusHQ/openstatus). The locale will become available to all status pages after the next deployment.

apps/docs/src/content/docs/reference/status-page.mdx

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ A status page is a dedicated web interface provided by OpenStatus that publicly
1212
- Incident communication and history.
1313
- Customizable branding and domain.
1414
- Multiple access control options.
15+
- Multi-language support with a locale switcher.
1516

1617
## Configuration
1718

@@ -84,6 +85,22 @@ ssh [slug]@ssh.openstatus.dev
8485

8586
**Example:** `ssh my-service@ssh.openstatus.dev`
8687

88+
### Translations (i18n)
89+
90+
**Type:** Per-page configuration
91+
92+
Enables multi-language support for your status page. You can set a default locale and optionally enable a locale switcher so visitors can choose their preferred language.
93+
94+
**Supported locales:** `en` (English), `fr` (Français), `de` (Deutsch)
95+
96+
**Configuration:**
97+
- **Default Locale** — the fallback language for your status page (defaults to `en`).
98+
- **Locale Switcher** — when enabled, visitors see a language dropdown. You select which locales to offer.
99+
100+
**Routing:** The default locale is omitted from the URL (`as-needed` prefix). Non-default locales appear in the path (e.g., `/fr/events`).
101+
102+
See [How to translate your status page](/guides/how-to-translate-status-page) for setup instructions and contributing new translations.
103+
87104
### White Label
88105

89106
**Type:** Boolean (add-on feature)
@@ -95,3 +112,4 @@ Removes the "powered by openstatus.dev" footer from your status page, providing
95112
- **[Create Status Page](/tutorial/how-to-create-status-page)** - Step-by-step tutorial on creating a status page.
96113
- **[How to Configure Status Page](/tutorial/how-to-configure-status-page)** - Guide on advanced status page configuration.
97114
- **[Status Report Reference](/reference/status-report)** - Details on how incident statuses are managed and reported.
115+
- **[How to Translate Your Status Page](/guides/how-to-translate-status-page)** - Enable multiple languages and contribute translations.

apps/docs/src/content/docs/tutorial/how-to-configure-status-page.mdx

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ By the end of this tutorial, you'll have:
3030
- A customized status page with your preferred theme
3131
- Configured status trackers displaying data your way
3232
- Links to important resources
33+
- Multi-language support with a locale switcher
3334
- Preview and live configuration experience
3435

3536
## Status Page Customization
@@ -123,6 +124,18 @@ Let's have a closer look at your status page header navigation:
123124

124125
---
125126

127+
### 4. Locales
128+
129+
You can offer your status page in multiple languages. In the **Locales** section of your status page settings:
130+
131+
1. Choose a **Default Locale** — the fallback language for visitors.
132+
2. Enable the **Locale Switcher** to let visitors pick their preferred language.
133+
3. Select which languages to make available.
134+
135+
Currently supported: English, French, and German. See [How to translate your status page](/guides/how-to-translate-status-page) for details on contributing new translations.
136+
137+
---
138+
126139
We are continuously adding new features. Feel free to let us know what's missing!
127140

128141
## What you've accomplished
@@ -132,6 +145,7 @@ Excellent work! You've successfully:
132145
- ✅ Customized status tracker display options
133146
- ✅ Explored and applied theme settings
134147
- ✅ Added navigation links to your status page
148+
- ✅ Configured locales and the language switcher
135149
- ✅ Previewed changes before making them live
136150

137151
## What's next?
99.6 KB
Loading
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
---
2+
title: "Status Page i18n"
3+
description: "Translate your status page into multiple languages and let visitors switch between them."
4+
publishedAt: "2026-03-22"
5+
image: "/assets/changelog/status-page-i18n.png"
6+
category: "statuspage"
7+
author: "openstatus"
8+
---
9+
10+
Status pages now support multiple languages out of the box. Configure which locales are available and set a default language for your page — visitors can switch between them with a built-in locale switcher.
11+
12+
- **Multi-language support** - enable English, French, and German translations for your status page
13+
- **Per-page configuration** - choose which languages to offer and set the default locale from the dashboard
14+
- **Locale switcher** - visitors can switch languages directly on the status page, works with both subdomain and pathname routing
15+
- **Locale-aware routing** - the default locale is omitted from the URL for cleaner paths, non-default locales are included automatically
16+
17+
Big props to [@aggmoulik](https://github.com/aggmoulik) who initiated the feature.

apps/web/src/content/pages/product/status-page.mdx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ faq:
99
answer: "Use public status pages for customer-facing services where transparency builds trust. Use private status pages (password-protected or magic link) for internal tools, client-specific deployments, or when you need to control who receives status updates."
1010
- question: "What's the difference between monitors and external services in page components?"
1111
answer: "Monitors are automatically synced with your OpenStatus uptime monitoring data and update in real-time. External services are manually managed components for third-party dependencies or systems you don't directly monitor but want to report status for."
12+
- question: "Can I translate my status page into other languages?"
13+
answer: "Yes, status pages support multiple languages (currently English, French, and German). You can set a default locale and enable a locale switcher so visitors choose their preferred language. Translations are open source — you can contribute new languages by adding a locale to the shared registry and running the dev server to generate the translation file."
1214
- question: "Can I use my own domain for the status page?"
1315
answer: "Yes, you can configure custom domains to host your status page on your own domain (e.g., status.yourcompany.com) instead of the default OpenStatus subdomain. This keeps the experience consistent with your brand."
1416
- question: "How do status page subscriptions work?"
@@ -84,6 +86,10 @@ We support following communication channels:
8486

8587
[Contact us](mailto:ping@openstatus.dev) if you are looking for specific a channel.
8688

89+
### Translations
90+
91+
Offer your status page in **multiple languages**. Set a default locale and enable a **locale switcher** so visitors can read updates in their preferred language. Currently supports English, French, and German — with more languages coming from community contributions.
92+
8793
### Audience
8894

8995
By default, your status page is public. For internal or client-specific pages, you can protect access using **password protection** or **magic link** authentication to control who can view your updates.

0 commit comments

Comments
 (0)