Skip to content

feat: add Croatian (HR) national calendar and translations#485

Open
zcuric wants to merge 2 commits intoLiturgical-Calendar:developmentfrom
zcuric:development
Open

feat: add Croatian (HR) national calendar and translations#485
zcuric wants to merge 2 commits intoLiturgical-Calendar:developmentfrom
zcuric:development

Conversation

@zcuric
Copy link

@zcuric zcuric commented Jan 24, 2026

Add complete Croatian liturgical calendar support including:

National Calendar (HR.json):

  • St. Joseph as patron of Croatia (Mar 19, solemnity)
  • Bl. Alojzije Stepinac (Feb 10, memorial)
  • Bl. Ozana Kotorska (Apr 27, optional memorial)
  • Bl. Ivan Merz (May 10, optional memorial)
  • St. Leopold Mandić (May 12, memorial)
  • Bl. Marija od Propetog Isusa Petković (Jul 9, optional memorial)
  • Our Lady of Marija Bistrica (Jul 13, optional memorial)
  • Bl. Augustin Kažotić (Aug 3, optional memorial)
  • Bl. Miroslav Bulešić (Aug 24, optional memorial)
  • St. Mark of Križevci (Sep 7, memorial)
  • St. Jerome elevated to memorial (Sep 30)
  • Bl. Gracija Kotorski (Nov 8, optional memorial)
  • St. Nikola Tavelić (Nov 14, memorial)

Settings configured for Croatian practice:

  • Epiphany on January 6
  • Ascension on Thursday
  • Corpus Christi on Thursday

i18n additions:

  • Croatian translations for ~40 liturgical terms in litcal.po
  • Croatian decree translations (hr.json)
  • Croatian lectionary files for all cycles
  • Croatian names for national calendar saints

Also adds Croatian (hr) locale to OpenAPI schema.

Summary by CodeRabbit

  • New Features

    • Full Croatian (hr_HR) support: UI translations for liturgical terms, saint names, dates, and calendar strings.
    • Croatian locale enabled in API endpoints for date/calendar queries.
    • Added Croatian national calendar, comprehensive lectionary data and decree/lectionary entries for HR.
  • Data Corrections

    • Minor name and reading key corrections in existing lectionary resources (Latin/Dutch) and a small decree text adjustment.

✏️ Tip: You can customize this high-level summary in your review settings.

Add complete Croatian liturgical calendar support including:

National Calendar (HR.json):
- St. Joseph as patron of Croatia (Mar 19, solemnity)
- Bl. Alojzije Stepinac (Feb 10, memorial)
- Bl. Ozana Kotorska (Apr 27, optional memorial)
- Bl. Ivan Merz (May 10, optional memorial)
- St. Leopold Mandić (May 12, memorial)
- Bl. Marija od Propetog Isusa Petković (Jul 9, optional memorial)
- Our Lady of Marija Bistrica (Jul 13, optional memorial)
- Bl. Augustin Kažotić (Aug 3, optional memorial)
- Bl. Miroslav Bulešić (Aug 24, optional memorial)
- St. Mark of Križevci (Sep 7, memorial)
- St. Jerome elevated to memorial (Sep 30)
- Bl. Gracija Kotorski (Nov 8, optional memorial)
- St. Nikola Tavelić (Nov 14, memorial)

Settings configured for Croatian practice:
- Epiphany on January 6
- Ascension on Thursday
- Corpus Christi on Thursday

i18n additions:
- Croatian translations for ~40 liturgical terms in litcal.po
- Croatian decree translations (hr.json)
- Croatian lectionary files for all cycles
- Croatian names for national calendar saints

Also adds Croatian (hr) locale to OpenAPI schema.
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 24, 2026

Walkthrough

Adds Croatian localization: updated translated strings, extended OpenAPI enums to accept "hr"/"HR", and introduced comprehensive Croatian calendar, decrees, and lectionary JSON data files (many placeholder readings and several prefilled entries).

Changes

Cohort / File(s) Summary
Translation Updates
i18n/hr/LC_MESSAGES/litcal.po
Completed ~43 Croatian msgstr entries for liturgical terms, removed fuzzy markers, and adjusted Croatian date formats and contextual phrases.
OpenAPI schema
jsondata/schemas/openapi.json
Added "hr" to locale enums and added "HR" (and "CA") to calendar_id enums used by national calendar and events endpoints.
National calendar & i18n
jsondata/sourcedata/calendars/nations/HR/HR.json, jsondata/sourcedata/calendars/nations/HR/i18n/hr_HR.json
New Croatian national calendar file with liturgical events/metadata and a 15-key Croatian i18n resource mapping.
Decrees & decree lectionary
jsondata/sourcedata/decrees/i18n/hr.json, jsondata/sourcedata/decrees/lectionary/hr.json
Minor edit to StIrenaeus Croatian string; added decree lectionary file with mostly empty placeholders, with StMotherTeresa readings populated.
Dominicale & festiva lectionaries (A/B/C)
jsondata/sourcedata/lectionary/dominicale_et_festivum_A/hr.json, ..._B/hr.json, ..._C/hr.json
Added three extensive lectionary cycle files for hr (many placeholders; some feasts prefilled).
Feriale / weekday lectionaries
jsondata/sourcedata/lectionary/feriale_per_annum_I/hr.json, ..._II/hr.json, jsondata/sourcedata/lectionary/feriale_tempus_{adventus,nativitatis,paschatis,quadragesimae}/hr.json
Added multiple weekday/seasonal lectionary JSON files covering Ordinary weeks and liturgical seasons; uniform schema with empty fields.
Sanctorum (saints) lectionary
jsondata/sourcedata/lectionary/sanctorum/hr.json
New large file mapping many saints/feasts to reading structures; mix of prefilled readings and empty placeholders.
Renames in other lectionary locales
jsondata/sourcedata/lectionary/sanctorum/la.json, .../nl.json
Corrected several saint key names (e.g., StFrancisDePsalmoesStFrancisDeSales, StActushanasiusStAthanasius, etc.) and adjusted one gospel reference.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~22 minutes

Possibly related PRs

Suggested labels

enhancement, localization

Poem

🐰 Hoppity-hop through the Dalmatian pages,
Croatian lines now bloom across the stages,
Saints and readings find their Croatian tune,
I nibble a carrot and hum a small rune,
Hooray — the calendar sings in Zagreb's noon!

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'feat: add Croatian (HR) national calendar and translations' directly and accurately describes the primary change: adding full Croatian liturgical calendar support with translations across multiple files.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
jsondata/schemas/openapi.json (1)

3431-3446: Update national calendar enums to include HR.

You added hr to the Easter locale enum, but the national calendar enums still list only IT/US/NL/VA/CA. With a new Croatian calendar, generated clients won’t accept HR for /calendar/nation/* and /events/nation/*. Please add HR to the inline calendar_id enums and components/parameters/NationalCalendarIdPathParam.

🛠️ Suggested patch (apply similarly to other inline enums)
           "enum": [
             "IT",
             "US",
             "NL",
             "VA",
-            "CA"
+            "CA",
+            "HR"
           ]
i18n/hr/LC_MESSAGES/litcal.po (1)

1476-1481: Grammar: adjust adjective case for dative agreement.

The adjective "vlastit" must agree in case with the dative noun "kalendaru". The nominative form "vlastit" should be changed to the dative form "vlastitom".

Suggested fix
-msgstr "%1$s '%2$s', vlastit kalendaru %3$s i obično slavljen %4$s, potisnut je od %5$s %6$s u godini %7$d."
+msgstr "%1$s '%2$s', vlastitom kalendaru %3$s i obično slavljen %4$s, potisnut je od %5$s %6$s u godini %7$d."
🤖 Fix all issues with AI agents
In `@jsondata/sourcedata/decrees/lectionary/hr.json`:
- Around line 56-61: The StMotherTeresa entry uses Latin book names; update the
fields on the "StMotherTeresa" object to use Croatian/HR abbreviations: change
"Isaiæ" to "Iz" in first_reading, "Psalmo" to "Ps" in responsorial_psalm, and
"Matthæum" to "Mt" in gospel_acclamation and gospel; ensure punctuation/spacing
matches other HR lectionary entries (e.g., "Iz 58, 6-11", "Ps 33, 2-3. 4-5. 6-7.
8-9. 10-11", "Mt 11, 25", and "Mt 25, 31-46|Mt 25, 31-40").

In `@jsondata/sourcedata/lectionary/dominicale_et_festivum_A/hr.json`:
- Around line 383-402: The "EasterVigil" entry's gospel value is wrong for Year
A; update the "gospel" field inside the EasterVigil object (key "EasterVigil" ->
property "gospel") from "Lk 24,1-12" to the Year A value "Mt 28,1-10".

In `@jsondata/sourcedata/lectionary/dominicale_et_festivum_B/hr.json`:
- Around line 383-402: The EasterVigil entry has the wrong gospel for Year B;
update the "gospel" field inside the "EasterVigil" object from "Lk 24,1-12" to
the Year B reading "Mk 16,1-7" (modify the "gospel" value in the EasterVigil
JSON object).

In `@jsondata/sourcedata/lectionary/sanctorum/hr.json`:
- Around line 48-63: The "Assumption" entry currently duplicates the readings
from StsPeterPaulAp; replace the vigil and day objects under "Assumption" with
the official Croatian lectionary readings for the Assumption (update the values
for keys first_reading, responsorial_psalm, second_reading, gospel_acclamation,
gospel for both "vigil" and "day"), ensure the texts differ from StsPeterPaulAp,
and add a source note or comment in the surrounding metadata indicating the
official Croatian lectionary as the reference for these values.
- Around line 169-174: Rename the misspelled event keys to their canonical forms
so lookups match the en.json lectionary/missal: change "StFrancisDePsalmoes" to
"StFrancisDeSales", "StJohnBaptistDeLaPsalmole" to "StJohnBaptistDeLaSalle",
"StActushanasius" to "StAthanasius", and "StsMarcumellinusPeter" to
"StsMarcellinusPeter" in hr.json (and apply the identical renames in nl.json and
la.json); also verify the correct canonical key for "StIoannemVianney" against
en.json/propriumdesanctis_1970 and rename it to that exact canonical identifier
so all lookups succeed.
🧹 Nitpick comments (1)
i18n/hr/LC_MESSAGES/litcal.po (1)

202-204: Consider gender‑inclusive phrasing for “For Religious”.

Line 204 uses “Za redovnike,” which can read as male‑only. If the intent is inclusive, consider a neutral or explicitly inclusive form. Please verify with a Croatian reviewer.

♻️ Suggested tweak (if inclusive wording is desired)
-msgstr "Za redovnike"
+msgstr "Za redovnike i redovnice"

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@jsondata/sourcedata/lectionary/sanctorum/hr.json`:
- Around line 9-23: Update the "NativityJohnBaptist" -> "day" object so its
readings match the Roman Missal (Lectionary 587) instead of duplicating the
vigil: set "first_reading" to "Is 49,1-6", "responsorial_psalm" to "Ps 139",
"second_reading" to "Acts 13,22-26", "gospel_acclamation" to "Lk 1,76", and
"gospel" to "Lk 1,57-66,80" in the "day" entry (leave the "vigil" entry
unchanged).

@zcuric
Copy link
Author

zcuric commented Jan 26, 2026

@JohnRDOrazio Hey Fr. John! Can you look at this, and if it's ok merge it and publish it? God bless. :)

@JohnRDOrazio
Copy link
Member

Thank you for catching the inconsistencies in the keys in jsondata/sourcedata/lectionary/sanctorum/*.json files! I messed that up when trying to fix the consistency in the biblical readings: some of the regex substitutions were too aggressive and messed up the saints names. I hope there weren't any other side effects. You caught some of them, but there were others too, so I took the opportunity to perform an even more complete consistency check.

@JohnRDOrazio
Copy link
Member

I believe there are some more missing translations that are required to complete this PR, see:

https://translate.johnromanodorazio.com/translate/liturgical-calendar/liturgical-calendar-api/api-strings/hr/?q=state:%3Ctranslated

@zcuric
Copy link
Author

zcuric commented Feb 23, 2026

@JohnRDOrazio Most of them, if not all, should be covered. Like, for example, "Proper" is added. If you check the diff, you can see that in .po file, all are translated.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants