nextcloud / nextcloud/contacts
Support Persian (Jalali/Shamsi) calendar in birthday & anniversary calendar
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 642
- Forks
- 220
- Avg merge
- 14h 39m
- Merged PRs (30d)
- 51
Description
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)on2026-08-28 - Desired:
علی رضایی (*۱۳۶۹)on ' ۶ شهریور ۱۴۰۵' or on "1405-06-06".
This could be implemented by:
- Adding a
DESCRIPTIONorSUMMARYfield to the generatedVEVENTobjects in
BirthdayService.phpthat includes the Jalali date when the user's locale isfa. - 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
BDAYfield is not possible sinceBDAYis a fixedYYYYMMDDGregorian 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.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with BirthdayService.php and trace how birthday and anniversary VEVENT objects are generated from contact BDAY data. Compare the locale-based and user-setting alternatives, then define the chosen behavior for Persian dates and verify that generated events include the expected Jalali date without changing the vCard source date.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- php
- Domain
- backend, internationalization
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100