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:
- 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.
- 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.
Is your feature request related to a problem? Please describe.
The auto-generated birthday calendar (from the
BDAYfield 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:Ali Rezaei (*1990)on2026-08-28علی رضایی (*۱۳۶۹)on ' ۶ شهریور ۱۴۰۵' or on "1405-06-06".This could be implemented by:
DESCRIPTIONorSUMMARYfield to the generatedVEVENTobjects inBirthdayService.phpthat includes the Jalali date when the user's locale isfa.The conversion can be done server-side using PHP's built-in
IntlDateFormatterwith
calendar=persian, or a lightweight library such asmorilog/jalalivia Composer.
Describe alternatives you've considered
BDAYfield is not possible sinceBDAYis a fixedYYYYMMDDGregorian format per vCard spec.Additional context
IntlDateFormatter(fa_IR@calendar=persian) with no external dependencies.