Skip to content

Support Persian (Jalali/Shamsi) calendar in birthday & anniversary calendar #5687

Description

@saman749

Is your feature request related to a problem? Please describe.

The auto-generated birthday calendar (from the BDAY field in contacts) only displays Gregorian dates. For users in Iran and other Persian-speaking regions, the Jalali (Solar Hijri / Shamsi) calendar is the primary calendar in daily use. Currently there is no way to see the Jalali date of a contact's birthday or anniversary in the calendar.

Describe the solution you'd like

When the user's locale is set to Persian (fa), the birthday/anniversary calendar events should display the Jalali date alongside (or instead of) the Gregorian date. Alternatively, this can be activated by the user for their contacts by their choice inside settings. For example:

  • Current: Ali Rezaei (*1990) on 2026-08-28
  • Desired: علی رضایی (*۱۳۶۹) on ' ۶ شهریور ۱۴۰۵' or on "1405-06-06".

This could be implemented by:

  1. Adding a DESCRIPTION or SUMMARY field to the generated VEVENT objects in
    BirthdayService.php that includes the Jalali date when the user's locale is fa.
  2. Alternatively, exposing a setting in the Calendar app to toggle Jalali date display.

The conversion can be done server-side using PHP's built-in IntlDateFormatter
with calendar=persian, or a lightweight library such as morilog/jalali
via Composer.

Describe alternatives you've considered

  • The Jalali Calendar app in the App Store overlays Jalali dates on the calendar grid, but it does not show the Jalali date on individual birthday/anniversary events — only the day header.
  • Manually entering the Jalali date in the contact's BDAY field is not possible since BDAY is a fixed YYYYMMDD Gregorian format per vCard spec.

Additional context

  • Related: nextcloud/server#33665 — broader request for Persian/Arabic calendar support across Nextcloud.
  • Related: nextcloud/calendar#4200 — request for Shamsi/Jalali calendar in the Calendar app.
  • The Jalali year is ~621–622 years behind the Gregorian year. The conversion is well-defined and can be done with IntlDateFormatter (fa_IR@calendar=persian) with no external dependencies.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions