Skip to main content
Kener’s internationalization (i18n) settings control which languages are available on your public status pages, which language is shown by default, whether visitors can manually switch timezones, and how dates and times are formatted. Navigate to Manage → Internationalization to configure these settings. The page requires the settings.read permission to view and settings.write to save changes.

Supported locales

Kener ships with translations for 21 locales. Each locale is a JSON file under src/lib/locales/ that provides the locale’s human-readable name and a mappings object of translated strings.
CodeLanguage
csČeština
deDeutsch
dkDansk
enEnglish
esEspañol
faPersian
frFrançais
hiहिन्दी
itItaliano
jaJapanese
koKorean
nb-NONorsk Bokmål
nlNederlands
plPolski
pt-BRPortuguês (Brasil)
ruРусский
skSlovenčina
trTürkçe
viTiếng Việt
zh-CN简体中文
zh-TW繁體中文(台灣)

Configuring available languages

1

Open the Internationalization page

Navigate to Manage → Internationalization.
2

Select available languages

In the Languages card, check each language you want to make available to status page visitors. Users will be able to switch between all checked languages using the language selector on the public page.
3

Set the default language

In the Default Language dropdown, select which language is shown when a visitor first arrives. Only languages you have checked in the previous step appear in this dropdown.The default language is always checked and cannot be unchecked — to change the default, first select a different default language, then uncheck the old one.
4

Save

Click Save Languages.
Language preferences are persisted per-visitor in localStorage under the key kener_preferred_locale. If a visitor has previously selected a language and it is still in your enabled list, their preference takes priority over the configured default.

Timezone settings

Kener automatically detects each visitor’s local timezone and displays all times accordingly. You can additionally allow visitors to manually switch between timezones using the toggle in the Timezone Settings card.
1

Enable timezone switching

Toggle Allow users to switch timezones to on.
2

Save

Click Save Timezone.
When the toggle is off, times are always shown in the visitor’s detected local timezone with no UI to change it.

Date & time format

The Date & Time Format card lets you control how dates and times appear across the status page. Formats use date-fns format tokens. There are three separate format strings:
SettingDefaultDescription
Date + TimePPppUsed when both a date and time are shown together
Date OnlyPPUsed when only a date is needed
Time OnlyppUsed when only a time is needed

Preset suggestions

The dashboard provides preset badges for each field. Click a badge to apply it and see a live preview of how the current date and time would render with that format. Date + Time presets
FormatLabel
PPpLocale (AM/PM)
PP HH:mmLocale date + 24h
yyyy-MM-dd HH:mmISO-like 24h
dd MMM yyyy h:mm aDay month year AM/PM
MMM dd, yyyy HH:mmMonth day year 24h
Date Only presets
FormatLabel
PPLocale
yyyy-MM-ddISO
dd/MM/yyyyDay-first
MMM dd, yyyyMonth day year
dd MMM yyyyDay month year
Time Only presets
FormatLabel
pLocale (AM/PM)
HH:mm24h
H:mm24h short
h:mm a12h AM/PM
hh:mm12h no period
You can also type any valid date-fns format string directly into the input. The preview line beneath each field updates in real time. If the format string is invalid, the preview shows Invalid format. Click Save Format to apply your changes.

Translation coverage

Translation coverage varies by locale. Untranslated keys fall back first to English and then to the raw key string. The fallback logic in src/lib/server/i18n.ts follows this order:
  1. Look up the key in the requested locale’s mappings.
  2. If not found and the locale is not en, look up the key in the English mappings.
  3. If still not found, return the key itself as the display string.
To contribute a new locale or improve an existing translation, add or edit the corresponding JSON file in src/lib/locales/. Each file must have a top-level name field (the human-readable language name) and a mappings object mapping source strings to their translations.

Build docs developers (and LLMs) love