Zedule.
CALENDAR

Calendar preferences — locale, hour format, week start

Set the operator's locale, 12 vs 24-hour clock, and week-start day in Settings → Scheduling → Calendar display. The calendar honours these everywhere — gutter labels, hover preview, agenda day headings, modal date strings.

Updated

The calendar’s display preferences live in Settings → Scheduling → Calendar display. They’re stored per-tenant in your browser’s localStorage, so each business you operate can have different settings.

Language / region

Pick from 9 locales for v1:

LocaleRegion
en-USEnglish (US)
en-GBEnglish (UK)
en-INEnglish (India)
fr-FRFrançais (France)
de-DEDeutsch (Germany)
es-ESEspañol (Spain)
pt-BRPortuguês (Brazil)
ja-JP日本語
zh-CN中文(简体)

Follow browser uses your browser’s navigator.language value — useful if you regularly travel.

The locale affects:

  • Date format (Tuesday, May 5, 2026 vs mardi 5 mai 2026)
  • Weekday names
  • Currency formatting
  • Number formatting

Time format

  • 12-hour2:00 PM
  • 24-hour14:00

Independent of locale: some en-US users prefer 24-hour clocks (medical, military, ops staff). The hour format affects:

  • Hour gutter labels (7AM vs 07)
  • Sub-hour gutter labels (:15, :30, :45)
  • Event card inline time labels (9:00 AM–9:45 AM vs 09:00–09:45)
  • Hover preview labels
  • Agenda view rows
  • Details modal “When” row

The start_at / end_at values stored on the server are always ISO timestamps (UTC). The display format is purely client-side.

Week starts on

  • Sunday — common in en-US, en-CA, ja-JP
  • Monday — common in most of EU + India
  • Saturday — common in some MENA / GCC regions

Affects:

  • Week view layout (day order)
  • Mini-month picker day-of-week headers + grid offset

Customer emails

Customer-facing emails (booking confirmation, reminders, cancellations) have their own locale + timezone derived from business_profile. Operator preferences here don’t change what the customer sees — that’s intentional, so the customer’s email always renders in their local conventions.

Where it’s stored

localStorage["zedule:cal:<tenant-slug>"] = {
  view: "day",
  zoom: 1,
  weekStart: 0,
  hourFormat: "12",
  locale: "en-US"
}

Clearing browser storage resets to defaults. If you switch browsers or devices, you’ll need to re-set on each one. There’s no server sync for these prefs — they’re operator preferences, not business-wide settings.