nextcloud / nextcloud/contacts

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

Open
#5,687 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

0. Needs triage enhancement
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) 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.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.