Skip to content

Conversation

@Oriol-Romani-BA
Copy link
Contributor

@Oriol-Romani-BA Oriol-Romani-BA commented Sep 25, 2025

Proposed change

Add Catalan language support for Spain holidays.

This PR adds comprehensive Catalan (ca) language support for all Spanish holidays, allowing users to get holiday names in Catalan. The implementation includes:

  • Added Catalan (ca) to the supported_languages list in the Spain class
  • Created complete Catalan translation files (ES.po and ES.mo) with proper translations for all Spanish holiday names
  • Added comprehensive test coverage for Catalan localization
  • Updated README.md to reflect Catalan language support in the Spain entry
  • All existing functionality remains unchanged, with Catalan as an additional language option

Type of change

  • New country/market holidays support (thank you!)
  • Supported country/market holidays update (calendar discrepancy fix, localization)
  • Existing code/documentation/test/process quality improvement (best practice, cleanup, refactoring, optimization)
  • Dependency update (version deprecation/pin/upgrade)
  • Bugfix (non-breaking change which fixes an issue)
  • Breaking change (a code change causing existing functionality to break)
  • New feature (new holidays functionality in general)

Checklist

Copilot AI review requested due to automatic review settings September 25, 2025 15:03
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Sep 25, 2025

Summary by CodeRabbit

  • New Features
    • Added Catalan (ca) localization for Spain holidays and enabled ca as a supported language.
  • Bug Fixes
    • Corrected spellings/accents across locales: Andalucía, Asturias Day, and Our Lady of Bien Aparecida.
  • Documentation
    • Updated Spain’s supported languages in the README.
    • Added Oriol Romaní Picas to the public contributors list.
  • Tests
    • Added coverage for Catalan (ca) locale for Spain.
    • Updated existing locale tests to reflect corrected names and diacritics.

Walkthrough

Adds Catalan ("ca") localization for Spain (new PO file and tests), updates Spain's supported_languages and corrected several holiday name spellings/accents across locale files and tests, bumps locale Project-Id-Version, and appends a contributor to CONTRIBUTORS.

Changes

Cohort / File(s) Summary of changes
Contributors update
CONTRIBUTORS
Added Oriol Romaní Picas entry after Ondřej Nový.
Spain language support & names
README.md, holidays/countries/spain.py
Inserted ca into Spain supported_languages (("ca", "en_US", "es", "uk")) and corrected holiday name spellings/accents (e.g., Día de AndaluciaDía de Andalucía, AsturiaAsturias, Our Lady of the Bien AparecidaOur Lady of Bien Aparecida).
Catalan locale resources
holidays/locale/ca/LC_MESSAGES/ES.po
Added Catalan PO file with translations and PO metadata covering Spain holidays and regions.
Locale updates (EN/ES/UK)
holidays/locale/en_US/LC_MESSAGES/ES.po, holidays/locale/es/LC_MESSAGES/ES.po, holidays/locale/uk/LC_MESSAGES/ES.po
Bumped Project-Id-Version to 0.82 and fixed msgid/msgstr/comment phrasing/accents for multiple entries (Andalucía, Asturias, Our Lady of Bien Aparecida).
Tests (Spain)
tests/countries/test_spain.py
Added test_l10n_ca(self) to validate Catalan strings for 2023 and updated expected localized strings to reflect corrected names/accents.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20–30 minutes

Suggested reviewers

  • KJhellico
  • arkid15r

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Title Check ✅ Passed The title clearly states that the pull request updates Spain holidays by adding Catalan (ca) localization, which is the primary change described in the changeset. It is concise and specific, enabling team members to understand the main purpose at a glance. The phrasing is clear and focuses on the key update without extraneous details.
Description Check ✅ Passed The pull request description clearly outlines the addition of Catalan language support for Spain holidays by listing updates to the supported_languages list, translation files, tests, and documentation, which matches the actual changes in the PR. It is fully related to the changeset and provides context for the implementation. Therefore it satisfies the criteria for a pass.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

📜 Recent review details

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d970093 and f8dc4e1.

📒 Files selected for processing (1)
  • tests/countries/test_spain.py (3 hunks)
🧰 Additional context used
🧬 Code graph analysis (1)
tests/countries/test_spain.py (1)
tests/common.py (1)
  • assertLocalizedHolidays (359-370)
⏰ Context from checks skipped due to timeout of 300000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
  • GitHub Check: Test Python 3.10 on windows-latest
  • GitHub Check: Test Python 3.14 on windows-latest
  • GitHub Check: Test Python 3.13 on windows-latest
  • GitHub Check: Test Python 3.13 on ubuntu-latest
🔇 Additional comments (3)
tests/countries/test_spain.py (3)

1054-1054: Correct spelling fix.

The accent on "Andalucía" aligns with proper Spanish orthography.


1089-1128: Well-structured Catalan locale test.

The test method follows the established pattern and is correctly positioned before test_l10n_en_us as requested in previous review. The comprehensive coverage of 2023 holidays ensures proper Catalan localization validation.


1158-1160: Correct English locale improvements.

Line 1158: "Asturias" is the proper English name for the region.
Line 1160: Removing "the" before "Bien Aparecida" improves the phrasing, as it's a proper name.

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 Ruff (0.13.3)
tests/countries/test_spain.py

�[1;31mruff failed�[0m
�[1mCause:�[0m Failed to load configuration /ruff.toml
�[1mCause:�[0m Failed to parse /ruff.toml
�[1mCause:�[0m TOML parse error at line 26, column 3
|
26 | "RSE100", # Use of assert detected
| ^^^^^^^^
Unknown rule selector: RSE100


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

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

This PR adds comprehensive Catalan language support for Spain holidays, allowing users to access Spanish holiday names in Catalan. The implementation maintains all existing functionality while adding Catalan as an additional language option.

  • Added Catalan (ca) to the supported languages list in the Spain class
  • Created complete Catalan translation files with proper translations for all Spanish holiday names
  • Added comprehensive test coverage for Catalan localization

Reviewed Changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated no comments.

Show a summary per file
File Description
holidays/countries/spain.py Added "ca" to the supported_languages tuple
holidays/locale/ca/LC_MESSAGES/ES.po Complete Catalan translation file with all Spanish holiday names
tests/countries/test_spain.py Added test_l10n_ca method with comprehensive Catalan localization tests
README.md Updated Spain entry to include Catalan language support
CONTRIBUTORS Added contributor credit

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

@codecov
Copy link

codecov bot commented Sep 25, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (ab58ac2) to head (f8dc4e1).
⚠️ Report is 1 commits behind head on dev.

Additional details and impacted files
@@            Coverage Diff            @@
##               dev     #2960   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files          301       301           
  Lines        17968     17968           
  Branches      2321      2321           
=========================================
  Hits         17968     17968           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copy link
Collaborator

@PPsyrius PPsyrius left a comment

Choose a reason for hiding this comment

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

It's always great to see more l10n support 👍

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: 3

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 951f87c and badf8f9.

📒 Files selected for processing (5)
  • CONTRIBUTORS (1 hunks)
  • README.md (1 hunks)
  • holidays/countries/spain.py (1 hunks)
  • holidays/locale/ca/LC_MESSAGES/ES.po (1 hunks)
  • tests/countries/test_spain.py (1 hunks)
🧰 Additional context used
🧠 Learnings (14)
📚 Learning: 2025-07-26T13:30:58.728Z
Learnt from: KJhellico
PR: vacanza/holidays#2757
File: README.md:1592-1597
Timestamp: 2025-07-26T13:30:58.728Z
Learning: In the holidays project README.md, supported languages in the country table are always arranged in alphabetical order, with the default language marked in bold but maintaining its alphabetical position rather than being moved to a special position.

Applied to files:

  • holidays/countries/spain.py
  • README.md
📚 Learning: 2025-06-13T12:18:03.539Z
Learnt from: PPsyrius
PR: vacanza/holidays#2614
File: holidays/countries/guyana.py:78-90
Timestamp: 2025-06-13T12:18:03.539Z
Learning: The holidays codebase now uses the constructor signature pattern `__init__(self, *args, islamic_show_estimated: bool = True, **kwargs)` across country classes.

Applied to files:

  • holidays/countries/spain.py
📚 Learning: 2025-04-05T04:47:27.213Z
Learnt from: PPsyrius
PR: vacanza/holidays#2416
File: tests/countries/test_turkmenistan.py:52-64
Timestamp: 2025-04-05T04:47:27.213Z
Learning: For holiday tests in the vacanza/holidays project, structure tests by individual holidays rather than by years. Each test method should focus on a specific holiday and test it across multiple years (from start_year through 2050) using helper methods like `assertHolidayName`. For fixed holidays, use generators like `(f"{year}-01-01" for year in range(1991, 2051))`. For movable holidays, specify individual dates for specific years followed by a range check.

Applied to files:

  • tests/countries/test_spain.py
📚 Learning: 2025-03-30T18:25:07.087Z
Learnt from: KJhellico
PR: vacanza/holidays#2388
File: holidays/locale/en_CI/LC_MESSAGES/CI.po:88-88
Timestamp: 2025-03-30T18:25:07.087Z
Learning: In the holidays library, localization files have a specific structure: message comments are in standard English (en_US) describing the holiday, while actual translations (msgstr) should use the locale-specific terminology (e.g., en_CI for Ivory Coast English). For example, "Night of Power" in standard English is translated as "Lailatou-Kadr" in Ivory Coast English.

Applied to files:

  • holidays/locale/ca/LC_MESSAGES/ES.po
📚 Learning: 2025-06-28T10:39:19.185Z
Learnt from: KJhellico
PR: vacanza/holidays#2684
File: holidays/locale/it/LC_MESSAGES/SM.po:13-13
Timestamp: 2025-06-28T10:39:19.185Z
Learning: In the holidays project, .po file header comments use the format "# [Country] holidays." for default language files (without trailing hash) and "# [Country] holidays [locale] localization." for non-default language files (also without trailing hash).

Applied to files:

  • holidays/locale/ca/LC_MESSAGES/ES.po
📚 Learning: 2025-03-31T19:37:57.691Z
Learnt from: KJhellico
PR: vacanza/holidays#2394
File: holidays/locale/pt_PT/LC_MESSAGES/CV.po:31-88
Timestamp: 2025-03-31T19:37:57.691Z
Learning: In the holidays library localization pattern, when a locale file matches a country's default language (e.g., pt_PT for Cape Verde), the msgstr fields should be left empty. Only non-default language locale files should have translations in the msgstr fields.

Applied to files:

  • holidays/locale/ca/LC_MESSAGES/ES.po
📚 Learning: 2025-03-31T19:37:57.691Z
Learnt from: KJhellico
PR: vacanza/holidays#2394
File: holidays/locale/pt_PT/LC_MESSAGES/CV.po:31-88
Timestamp: 2025-03-31T19:37:57.691Z
Learning: In the holidays library, when a locale file matches the country's default language (e.g., pt_PT for Cape Verde), the msgstr fields should be left empty. Only non-default language files should have filled msgstr fields with translations.

Applied to files:

  • holidays/locale/ca/LC_MESSAGES/ES.po
📚 Learning: 2025-05-06T15:25:44.333Z
Learnt from: KJhellico
PR: vacanza/holidays#2530
File: holidays/locale/ca/LC_MESSAGES/AD.po:31-40
Timestamp: 2025-05-06T15:25:44.333Z
Learning: In the Holidays project, msgid fields in localization files contain strings in the entity's default language (as defined by default_language attribute), not English source strings as in standard gettext implementations.

Applied to files:

  • holidays/locale/ca/LC_MESSAGES/ES.po
📚 Learning: 2025-06-26T15:34:35.476Z
Learnt from: KJhellico
PR: vacanza/holidays#2676
File: holidays/locale/en_US/LC_MESSAGES/TN.po:17-28
Timestamp: 2025-06-26T15:34:35.476Z
Learning: In the holidays project, .po file header metadata updates (version numbers, revision dates, translator information) are legitimate changes when part of localization work and don't require `make l10n` regeneration. The `make l10n` command is primarily for formatting fixes and missing translator comments, not for intentional metadata updates.

Applied to files:

  • holidays/locale/ca/LC_MESSAGES/ES.po
📚 Learning: 2025-03-05T17:51:00.633Z
Learnt from: KJhellico
PR: vacanza/holidays#2259
File: holidays/locale/en_IN/LC_MESSAGES/IN.po:30-299
Timestamp: 2025-03-05T17:51:00.633Z
Learning: In the Holidays project, .po files for a country's default locale use empty msgstr fields as a standard convention.

Applied to files:

  • holidays/locale/ca/LC_MESSAGES/ES.po
📚 Learning: 2025-03-30T13:33:31.598Z
Learnt from: PPsyrius
PR: vacanza/holidays#2388
File: holidays/locale/fr/LC_MESSAGES/CI.po:28-101
Timestamp: 2025-03-30T13:33:31.598Z
Learning: In the holidays library, for localization files of the default language (like French for Ivory Coast in fr/LC_MESSAGES/CI.po), the best practice is to leave the message strings (msgstr) empty to avoid possible typos, since the message IDs (msgid) are already in the target language.

Applied to files:

  • holidays/locale/ca/LC_MESSAGES/ES.po
📚 Learning: 2025-06-25T20:55:00.642Z
Learnt from: KJhellico
PR: vacanza/holidays#2651
File: holidays/locale/nl/LC_MESSAGES/BQ.po:29-95
Timestamp: 2025-06-25T20:55:00.642Z
Learning: In the holidays library, Dutch locale files (.po) with `X-Source-Language: nl` should have empty msgstr entries when the target language is also Dutch. The library uses fallback=True with gettext, which returns the original msgid when msgstr is empty. This is the correct pattern for native language files and does not cause blank holiday names.

Applied to files:

  • holidays/locale/ca/LC_MESSAGES/ES.po
📚 Learning: 2025-06-11T18:32:25.595Z
Learnt from: ankushhKapoor
PR: vacanza/holidays#2601
File: holidays/locale/en_MN/LC_MESSAGES/MN.po:13-14
Timestamp: 2025-06-11T18:32:25.595Z
Learning: For non-default locale `.po` files, the header comment format is:
`# <Country> holidays <locale> localization.` (no trailing hash).

Applied to files:

  • holidays/locale/ca/LC_MESSAGES/ES.po
📚 Learning: 2025-06-25T10:09:29.029Z
Learnt from: PPsyrius
PR: vacanza/holidays#2676
File: holidays/locale/ar/LC_MESSAGES/EG.po:0-0
Timestamp: 2025-06-25T10:09:29.029Z
Learning: In the holidays library, msgstr fields can be left empty for source/default_language files when using Lingva, the localization tool used by the project.

Applied to files:

  • holidays/locale/ca/LC_MESSAGES/ES.po
🧬 Code graph analysis (1)
tests/countries/test_spain.py (1)
tests/common.py (1)
  • assertLocalizedHolidays (359-370)
⏰ Context from checks skipped due to timeout of 300000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Test Python 3.13 on windows-latest
🔇 Additional comments (3)
holidays/countries/spain.py (1)

124-124: LGTM: add Catalan to supported_languages.

Alphabetical order looks consistent with project convention. No further changes needed here.

CONTRIBUTORS (1)

114-114: LGTM: contributor entry added.

Placement after “Ondřej Nový” is correct.

tests/countries/test_spain.py (1)

1130-1169: LGTM: comprehensive CA localization assertions for 2023.

Matches PO translations and existing en_US/es/uk patterns.

Oriol-Romani-BA and others added 3 commits September 25, 2025 16:13
Co-authored-by: Panpakorn Siripanich <19505219+PPsyrius@users.noreply.github.com>
Signed-off-by: Oriol Romaní <oriol.romani@ba.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Signed-off-by: Oriol Romaní <oriol.romani@ba.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Signed-off-by: Oriol Romaní <oriol.romani@ba.com>
@KJhellico KJhellico changed the title Add Catalan language support for Spain holidays Update Spain holidays: add Catalan (ca) localization Sep 25, 2025
Oriol-Romani-BA and others added 3 commits September 26, 2025 11:38
Co-authored-by: ~Jhellico <KJhellico@users.noreply.github.com>
Signed-off-by: Oriol Romaní <oriol.romani@ba.com>
Co-authored-by: ~Jhellico <KJhellico@users.noreply.github.com>
Signed-off-by: Oriol Romaní <oriol.romani@ba.com>
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: 4

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between dd10f2a and 08dd6b7.

📒 Files selected for processing (1)
  • holidays/locale/ca/LC_MESSAGES/ES.po (1 hunks)
🧰 Additional context used
🧠 Learnings (16)
📚 Learning: 2025-06-28T10:39:19.185Z
Learnt from: KJhellico
PR: vacanza/holidays#2684
File: holidays/locale/it/LC_MESSAGES/SM.po:13-13
Timestamp: 2025-06-28T10:39:19.185Z
Learning: In the holidays project, .po file header comments use the format "# [Country] holidays." for default language files (without trailing hash) and "# [Country] holidays [locale] localization." for non-default language files (also without trailing hash).

Applied to files:

  • holidays/locale/ca/LC_MESSAGES/ES.po
📚 Learning: 2025-03-30T18:25:07.087Z
Learnt from: KJhellico
PR: vacanza/holidays#2388
File: holidays/locale/en_CI/LC_MESSAGES/CI.po:88-88
Timestamp: 2025-03-30T18:25:07.087Z
Learning: In the holidays library, localization files have a specific structure: message comments are in standard English (en_US) describing the holiday, while actual translations (msgstr) should use the locale-specific terminology (e.g., en_CI for Ivory Coast English). For example, "Night of Power" in standard English is translated as "Lailatou-Kadr" in Ivory Coast English.

Applied to files:

  • holidays/locale/ca/LC_MESSAGES/ES.po
📚 Learning: 2025-03-31T19:37:57.691Z
Learnt from: KJhellico
PR: vacanza/holidays#2394
File: holidays/locale/pt_PT/LC_MESSAGES/CV.po:31-88
Timestamp: 2025-03-31T19:37:57.691Z
Learning: In the holidays library localization pattern, when a locale file matches a country's default language (e.g., pt_PT for Cape Verde), the msgstr fields should be left empty. Only non-default language locale files should have translations in the msgstr fields.

Applied to files:

  • holidays/locale/ca/LC_MESSAGES/ES.po
📚 Learning: 2025-03-31T19:37:57.691Z
Learnt from: KJhellico
PR: vacanza/holidays#2394
File: holidays/locale/pt_PT/LC_MESSAGES/CV.po:31-88
Timestamp: 2025-03-31T19:37:57.691Z
Learning: In the holidays library, when a locale file matches the country's default language (e.g., pt_PT for Cape Verde), the msgstr fields should be left empty. Only non-default language files should have filled msgstr fields with translations.

Applied to files:

  • holidays/locale/ca/LC_MESSAGES/ES.po
📚 Learning: 2025-05-06T15:25:44.333Z
Learnt from: KJhellico
PR: vacanza/holidays#2530
File: holidays/locale/ca/LC_MESSAGES/AD.po:31-40
Timestamp: 2025-05-06T15:25:44.333Z
Learning: In the Holidays project, msgid fields in localization files contain strings in the entity's default language (as defined by default_language attribute), not English source strings as in standard gettext implementations.

Applied to files:

  • holidays/locale/ca/LC_MESSAGES/ES.po
📚 Learning: 2025-06-11T18:32:25.595Z
Learnt from: ankushhKapoor
PR: vacanza/holidays#2601
File: holidays/locale/en_MN/LC_MESSAGES/MN.po:13-14
Timestamp: 2025-06-11T18:32:25.595Z
Learning: For non-default locale `.po` files, the header comment format is:
`# <Country> holidays <locale> localization.` (no trailing hash).

Applied to files:

  • holidays/locale/ca/LC_MESSAGES/ES.po
📚 Learning: 2025-06-26T15:34:35.476Z
Learnt from: KJhellico
PR: vacanza/holidays#2676
File: holidays/locale/en_US/LC_MESSAGES/TN.po:17-28
Timestamp: 2025-06-26T15:34:35.476Z
Learning: In the holidays project, .po file header metadata updates (version numbers, revision dates, translator information) are legitimate changes when part of localization work and don't require `make l10n` regeneration. The `make l10n` command is primarily for formatting fixes and missing translator comments, not for intentional metadata updates.

Applied to files:

  • holidays/locale/ca/LC_MESSAGES/ES.po
📚 Learning: 2025-03-05T17:51:00.633Z
Learnt from: KJhellico
PR: vacanza/holidays#2259
File: holidays/locale/en_IN/LC_MESSAGES/IN.po:30-299
Timestamp: 2025-03-05T17:51:00.633Z
Learning: In the Holidays project, .po files for a country's default locale use empty msgstr fields as a standard convention.

Applied to files:

  • holidays/locale/ca/LC_MESSAGES/ES.po
📚 Learning: 2025-04-05T08:12:19.986Z
Learnt from: PPsyrius
PR: vacanza/holidays#2402
File: holidays/locale/en_TT/LC_MESSAGES/TT.po:46-48
Timestamp: 2025-04-05T08:12:19.986Z
Learning: In the holidays library, localization (PO) files follow this convention: comments (#.) always use American English (en_US) spelling, while the msgid content follows the locale-specific spelling standards of the target language.

Applied to files:

  • holidays/locale/ca/LC_MESSAGES/ES.po
📚 Learning: 2025-06-25T20:55:00.642Z
Learnt from: KJhellico
PR: vacanza/holidays#2651
File: holidays/locale/nl/LC_MESSAGES/BQ.po:29-95
Timestamp: 2025-06-25T20:55:00.642Z
Learning: In the holidays library, Dutch locale files (.po) with `X-Source-Language: nl` should have empty msgstr entries when the target language is also Dutch. The library uses fallback=True with gettext, which returns the original msgid when msgstr is empty. This is the correct pattern for native language files and does not cause blank holiday names.

Applied to files:

  • holidays/locale/ca/LC_MESSAGES/ES.po
📚 Learning: 2025-06-14T20:36:17.239Z
Learnt from: KJhellico
PR: vacanza/holidays#2614
File: holidays/countries/guyana.py:114-116
Timestamp: 2025-06-14T20:36:17.239Z
Learning: In the holidays codebase, message comments should always use en_US spelling conventions, while translatable strings can use appropriate local spellings for the target country/region.

Applied to files:

  • holidays/locale/ca/LC_MESSAGES/ES.po
📚 Learning: 2025-09-17T15:53:16.940Z
Learnt from: PPsyrius
PR: vacanza/holidays#2944
File: holidays/countries/myanmar.py:108-111
Timestamp: 2025-09-17T15:53:16.940Z
Learning: In the holidays package, explanatory comments about year restrictions or policy context should be placed above conditional blocks or at method level, never directly above holiday name comments that precede tr() function calls, as this would include the explanatory text in .po localization files when running `make l10n`.

Applied to files:

  • holidays/locale/ca/LC_MESSAGES/ES.po
📚 Learning: 2025-04-03T05:59:57.480Z
Learnt from: PPsyrius
PR: vacanza/holidays#2407
File: snapshots/countries/TL_COMMON.json:7-7
Timestamp: 2025-04-03T05:59:57.480Z
Learning: In the holidays project, snapshot files (like snapshots/countries/TL_COMMON.json) are auto-generated when running `make snapshot` and should not be manually edited. Semicolons (;) in holiday entries are used as separators when multiple holidays occur on the same date.

Applied to files:

  • holidays/locale/ca/LC_MESSAGES/ES.po
📚 Learning: 2025-04-26T19:55:09.581Z
Learnt from: KJhellico
PR: vacanza/holidays#2501
File: scripts/docs/gen_index.py:1-12
Timestamp: 2025-04-26T19:55:09.581Z
Learning: The holidays project uses a standard header for all Python (.py) files in the repository that describes the overall holidays library, including authors, website and license information, regardless of the specific purpose of individual script files.

Applied to files:

  • holidays/locale/ca/LC_MESSAGES/ES.po
📚 Learning: 2025-06-19T05:54:49.792Z
Learnt from: PPsyrius
PR: vacanza/holidays#2642
File: holidays/countries/french_polynesia.py:1-12
Timestamp: 2025-06-19T05:54:49.792Z
Learning: The holidays library uses a standard file header format across all country implementation files consisting of a comprehensive comment block with project description, authors, website, and license information. Country files do not use module-level docstrings but instead rely on this header format followed by class-level docstrings.

Applied to files:

  • holidays/locale/ca/LC_MESSAGES/ES.po
📚 Learning: 2025-06-10T12:17:58.880Z
Learnt from: KJhellico
PR: vacanza/holidays#2608
File: holidays/locale/en_VC/LC_MESSAGES/VC.po:1-14
Timestamp: 2025-06-10T12:17:58.880Z
Learning: In the holidays project, .po files should use the full multi-line header format including the project description, authors, website, and license information, rather than a single-line comment format.

Applied to files:

  • holidays/locale/ca/LC_MESSAGES/ES.po
🔇 Additional comments (3)
holidays/locale/ca/LC_MESSAGES/ES.po (3)

13-29: Header and metadata look correct.

Non-default locale header string, X-Source-Language: es, and Project-Id-Version all align with repo conventions.


35-44: Pluralization of “Monday following %s” looks good.

The parameterized forms and “(estimated)” variants are correctly localized.


20-20: Set Last-Translator to the actual contributor.

Replace placeholder with the current translator’s name/email (e.g., GitHub noreply).

Example:

-"Last-Translator: ~Jhellico <jhellico@gmail.com>\n"
+"Last-Translator: Oriol Romaní Picas <oriolromani@users.noreply.github.com>\n"

Based on learnings

Oriol-Romani-BA and others added 5 commits September 26, 2025 11:59
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Signed-off-by: Oriol Romaní <oriol.romani@ba.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Signed-off-by: Oriol Romaní <oriol.romani@ba.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Signed-off-by: Oriol Romaní <oriol.romani@ba.com>
PPsyrius
PPsyrius previously approved these changes Oct 1, 2025
Copy link
Collaborator

@PPsyrius PPsyrius left a comment

Choose a reason for hiding this comment

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

LGTM 🌐

KJhellico
KJhellico previously approved these changes Oct 1, 2025
Copy link
Collaborator

@KJhellico KJhellico left a comment

Choose a reason for hiding this comment

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

LGTM. 👍

PPsyrius
PPsyrius previously approved these changes Oct 1, 2025
@arkid15r arkid15r added this pull request to the merge queue Oct 3, 2025
github-merge-queue bot pushed a commit that referenced this pull request Oct 3, 2025
Signed-off-by: Oriol Romaní <oriol.romani@ba.com>
Co-authored-by: Oriol Romani <oriol.romani@BA-MAC-JH62CVQC3H.local>
Co-authored-by: Panpakorn Siripanich <19505219+PPsyrius@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: ~Jhellico <KJhellico@users.noreply.github.com>
Co-authored-by: ~Jhellico <jhellico@gmail.com>
@arkid15r arkid15r removed this pull request from the merge queue due to a manual request Oct 3, 2025
arkid15r and others added 2 commits October 2, 2025 19:25
Signed-off-by: Panpakorn Siripanich <19505219+PPsyrius@users.noreply.github.com>
@PPsyrius PPsyrius dismissed stale reviews from KJhellico and themself via e875e26 October 3, 2025 07:15
@PPsyrius
Copy link
Collaborator

PPsyrius commented Oct 3, 2025

@Oriol-Romani-BA After #2971 got merged in, since I can't edit the files that aren't already included in this PR, please do the following:

  • add ca l10n stub for Canary Islands' standlone implementation (IC.po):
#  holidays
#  --------
#  A fast, efficient Python library for generating country, province and state
#  specific sets of holidays on the fly. It aims to make determining whether a
#  specific date is a holiday as fast and flexible as possible.
#
#  Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
#           dr-prodigy <dr.prodigy.github@gmail.com> (c) 2017-2023
#           ryanss <ryanssdev@icloud.com> (c) 2014-2017
#  Website: https://github.com/vacanza/holidays
#  License: MIT (see LICENSE file)
#
# Canary Islands holidays ca localization.
#
msgid ""
msgstr ""
"Project-Id-Version: Holidays 0.82\n"
"POT-Creation-Date: 2025-09-30 17:35+0000\n"
"PO-Revision-Date: 2025-09-30 17:35+0000\n"
"Last-Translator: Oriol Romaní <oriolromanipicas@gmail.com>\n"
"Language-Team: Holidays Localization Team\n"
"Language: ca\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Lingua 4.15.0\n"
"X-Generator: Poedit 3.4\n"
"X-Source-Language: es\n"
  • Update test_canary islands.py to include the following section (after test_l10n_default, before test_l10n_en_us):
    def test_l10n_ca(self):
        self.assertLocalizedHolidays(
            "ca",
            ("1983-01-01", "Cap d'Any"),
            ("1983-01-06", "Reis"),
            ("1983-03-31", "Dijous Sant"),
            ("1983-04-01", "Divendres Sant"),
            ("1983-05-01", "Festa del Treball"),
            ("1983-05-30", "Dia de les Canàries"),
            ("1983-08-15", "Assumpció de la Verge"),
            ("1983-10-12", "Festa Nacional d'Espanya"),
            ("1983-11-01", "Tots Sants"),
            ("1983-12-06", "Dia de la Constitució Espanyola"),
            ("1983-12-08", "Immaculada Concepció"),
            ("1983-12-25", "Nativitat del Senyor"),
        )

@KJhellico
Copy link
Collaborator

Now there is no longer a need for updates to adjust to Canary Islands, as #2971 has been reverted. 🤷‍♂️

Signed-off-by: Panpakorn Siripanich <19505219+PPsyrius@users.noreply.github.com>
Signed-off-by: Panpakorn Siripanich <19505219+PPsyrius@users.noreply.github.com>
@sonarqubecloud
Copy link

sonarqubecloud bot commented Oct 4, 2025

@PPsyrius
Copy link
Collaborator

PPsyrius commented Oct 4, 2025

@KJhellico @arkid15r I've removed the Canary Islands-specific changes, and this is now ready for merge again

Copy link
Collaborator

@arkid15r arkid15r left a comment

Choose a reason for hiding this comment

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

LGTM, thank you @Oriol-Romani-BA

@arkid15r arkid15r added this pull request to the merge queue Oct 4, 2025
Merged via the queue into vacanza:dev with commit 0c769b4 Oct 4, 2025
36 checks passed
@arkid15r arkid15r mentioned this pull request Oct 6, 2025
@Oriol-Romani-BA
Copy link
Contributor Author

sorry I've been out for some time, thanks for all the help!

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants