From 4a4d2067d4ac0eee2028687d8eb6277ccb470933 Mon Sep 17 00:00:00 2001 From: PPsyrius <19505219+PPsyrius@users.noreply.github.com> Date: Sat, 4 Oct 2025 11:57:00 +0700 Subject: [PATCH 1/8] Update Switzerland holidays: add Zurich's `HALF_DAY` holidays, `th` l10n support --- README.md | 2 +- holidays/countries/switzerland.py | 50 ++- holidays/locale/de/LC_MESSAGES/CH.po | 16 +- holidays/locale/en_US/LC_MESSAGES/CH.po | 16 +- holidays/locale/fr/LC_MESSAGES/CH.po | 16 +- holidays/locale/it/LC_MESSAGES/CH.po | 16 +- holidays/locale/th/LC_MESSAGES/CH.po | 132 ++++++++ holidays/locale/uk/LC_MESSAGES/CH.po | 16 +- snapshots/countries/CH_ZH.json | 405 +++++++++++++++++++++++- tests/countries/test_switzerland.py | 177 ++++++++++- tests/test_utils.py | 171 +++++----- 11 files changed, 887 insertions(+), 130 deletions(-) create mode 100644 holidays/locale/th/LC_MESSAGES/CH.po diff --git a/README.md b/README.md index 9bcdae2b75..4ccaea5dda 100644 --- a/README.md +++ b/README.md @@ -1634,7 +1634,7 @@ any) in brackets, available languages and additional holiday categories. All cou Switzerland CH Cantons: AG (Aargau), AI (Appenzell Innerrhoden), AR (Appenzell Ausserrhoden), BE (Bern, Berne), BL (Basel-Landschaft), BS (Basel-Stadt), FR (Freiburg, Fribourg), GE (Genève), GL (Glarus), GR (Graubünden, Grigioni, Grischun), JU (Jura), LU (Luzern), NE (Neuchâtel), NW (Nidwalden), OW (Obwalden), SG (Sankt Gallen), SH (Schaffhausen), SO (Solothurn), SZ (Schwyz), TG (Thurgau), TI (Ticino), UR (Uri), VD (Vaud), VS (Valais, Wallis), ZG (Zug), ZH (Zürich) -de, en_US, fr, it, uk +de, en_US, fr, it, th, uk HALF_DAY, OPTIONAL diff --git a/holidays/countries/switzerland.py b/holidays/countries/switzerland.py index ef476f08a6..959d183929 100644 --- a/holidays/countries/switzerland.py +++ b/holidays/countries/switzerland.py @@ -12,10 +12,16 @@ from gettext import gettext as tr -from holidays.calendars.gregorian import APR, THU, _timedelta, _get_nth_weekday_of_month +from holidays.calendars.gregorian import MAR, APR, MON, THU, _timedelta, _get_nth_weekday_of_month from holidays.constants import HALF_DAY, OPTIONAL, PUBLIC from holidays.groups import ChristianHolidays, InternationalHolidays -from holidays.observed_holiday_base import ObservedHolidayBase, MON_ONLY, TUE_TO_NONE, SAT_TO_NONE +from holidays.observed_holiday_base import ( + ObservedHolidayBase, + MON_ONLY, + TUE_TO_NONE, + SAT_TO_NONE, + ALL_TO_NEXT_MON, +) class Switzerland(ObservedHolidayBase, ChristianHolidays, InternationalHolidays): @@ -23,6 +29,8 @@ class Switzerland(ObservedHolidayBase, ChristianHolidays, InternationalHolidays) References: * + * + * * * """ @@ -92,7 +100,7 @@ class Switzerland(ObservedHolidayBase, ChristianHolidays, InternationalHolidays) "Zürich": "ZH", } supported_categories = (HALF_DAY, OPTIONAL, PUBLIC) - supported_languages = ("de", "en_US", "fr", "it", "uk") + supported_languages = ("de", "en_US", "fr", "it", "th", "uk") def __init__(self, *args, **kwargs): ChristianHolidays.__init__(self) @@ -713,9 +721,45 @@ def _populate_subdiv_zh_public_holidays(self): # Whit Monday. self._add_whit_monday(tr("Pfingstmontag")) + if self._year >= 1899: + # Knabenschiessen. + name = tr("Knabenschiessen") + self._add_holiday_2nd_sun_of_sep(name) + self._add_holiday_1_day_prior_2nd_sun_of_sep(name) + # Saint Stephen's Day. self._add_christmas_day_two(tr("Stephanstag")) + def _populate_subdiv_zh_half_day_holidays(self): + if self._year >= 1902: + # Sechseläuten. + name = tr("Sechseläuten") + # Third Monday in April but not in Holy Week. + if self._year >= 1952: + dt = _get_nth_weekday_of_month(3, MON, APR, self._year) + self._add_holiday( + name, _timedelta(dt, +7) if dt == _timedelta(self._easter_sunday, +1) else dt + ) + # From 1902-1951 this was the First Monday following the Vernal Equinox. + else: + self._move_holiday( + self._add_holiday(name, self._vernal_equinox_date), + rule=ALL_TO_NEXT_MON, + show_observed_label=False, + ) + + if self._year >= 1899: + # Knabenschiessen. + self._add_holiday_1_day_past_2nd_sun_of_sep(tr("Knabenschiessen")) + + @property + def _vernal_equinox_date(self) -> tuple[int, int]: + """Return the Vernal Equinox date for Zurich (1902–1951).""" + day = 21 + if (self._year >= 1916 and self._year % 4 == 0) or self._year == 1949: + day = 20 + return MAR, day + class CH(Switzerland): pass diff --git a/holidays/locale/de/LC_MESSAGES/CH.po b/holidays/locale/de/LC_MESSAGES/CH.po index 2a582330df..16af391e77 100644 --- a/holidays/locale/de/LC_MESSAGES/CH.po +++ b/holidays/locale/de/LC_MESSAGES/CH.po @@ -13,17 +13,17 @@ # Switzerland holidays. msgid "" msgstr "" -"Project-Id-Version: Holidays 0.42\n" +"Project-Id-Version: Holidays 0.82\n" "POT-Creation-Date: 2023-04-10 15:41+0300\n" -"PO-Revision-Date: 2024-01-21 14:46+0200\n" -"Last-Translator: ~Jhellico \n" +"PO-Revision-Date: 2025-10-04 11:30+0700\n" +"Last-Translator: PPsyrius \n" "Language-Team: Holidays Localization Team\n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: pygettext.py 1.5\n" -"X-Generator: Poedit 3.4\n" +"X-Generator: Poedit 3.7\n" "X-Source-Language: de\n" #. New Year's Day. @@ -121,3 +121,11 @@ msgstr "" #. Prayer Monday. msgid "Bettagsmontag" msgstr "" + +#. Knabenschiessen. +msgid "Knabenschiessen" +msgstr "" + +#. Sechseläuten. +msgid "Sechseläuten" +msgstr "" diff --git a/holidays/locale/en_US/LC_MESSAGES/CH.po b/holidays/locale/en_US/LC_MESSAGES/CH.po index bd73d69c7e..b8cd1ef39b 100644 --- a/holidays/locale/en_US/LC_MESSAGES/CH.po +++ b/holidays/locale/en_US/LC_MESSAGES/CH.po @@ -14,17 +14,17 @@ # msgid "" msgstr "" -"Project-Id-Version: Holidays 0.56\n" +"Project-Id-Version: Holidays 0.82\n" "POT-Creation-Date: 2023-04-10 15:41+0300\n" -"PO-Revision-Date: 2024-08-31 18:20+0300\n" -"Last-Translator: ~Jhellico \n" +"PO-Revision-Date: 2025-10-04 11:31+0700\n" +"Last-Translator: PPsyrius \n" "Language-Team: Holidays Localization Team\n" "Language: en_US\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: pygettext.py 1.5\n" -"X-Generator: Poedit 3.4\n" +"X-Generator: Poedit 3.7\n" "X-Source-Language: de\n" #. New Year's Day. @@ -122,3 +122,11 @@ msgstr "Saints Peter and Paul" #. Prayer Monday. msgid "Bettagsmontag" msgstr "Prayer Monday" + +#. Knabenschiessen. +msgid "Knabenschiessen" +msgstr "Knabenschiessen" + +#. Sechseläuten. +msgid "Sechseläuten" +msgstr "Sechseläuten" diff --git a/holidays/locale/fr/LC_MESSAGES/CH.po b/holidays/locale/fr/LC_MESSAGES/CH.po index ae0d3ac143..90606f33d1 100644 --- a/holidays/locale/fr/LC_MESSAGES/CH.po +++ b/holidays/locale/fr/LC_MESSAGES/CH.po @@ -13,17 +13,17 @@ # Switzerland holidays fr localization. msgid "" msgstr "" -"Project-Id-Version: Holidays 0.42\n" +"Project-Id-Version: Holidays 0.82\n" "POT-Creation-Date: 2023-04-10 15:41+0300\n" -"PO-Revision-Date: 2024-01-21 14:48+0200\n" -"Last-Translator: ~Jhellico \n" +"PO-Revision-Date: 2025-10-04 11:31+0700\n" +"Last-Translator: PPsyrius \n" "Language-Team: Holidays Localization Team\n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: pygettext.py 1.5\n" -"X-Generator: Poedit 3.4\n" +"X-Generator: Poedit 3.7\n" "X-Source-Language: de\n" #. New Year's Day. @@ -121,3 +121,11 @@ msgstr "Saint-Pierre et Paul" #. Prayer Monday. msgid "Bettagsmontag" msgstr "Lundi du Jeûne fédéral" + +#. Knabenschiessen. +msgid "Knabenschiessen" +msgstr "Knabenschiessen" + +#. Sechseläuten. +msgid "Sechseläuten" +msgstr "Sechseläuten" diff --git a/holidays/locale/it/LC_MESSAGES/CH.po b/holidays/locale/it/LC_MESSAGES/CH.po index 9406c0bf08..bdac4ce6a2 100644 --- a/holidays/locale/it/LC_MESSAGES/CH.po +++ b/holidays/locale/it/LC_MESSAGES/CH.po @@ -13,17 +13,17 @@ # Switzerland holidays it localization. msgid "" msgstr "" -"Project-Id-Version: Holidays 0.42\n" +"Project-Id-Version: Holidays 0.82\n" "POT-Creation-Date: 2023-04-10 15:41+0300\n" -"PO-Revision-Date: 2024-01-21 14:48+0200\n" -"Last-Translator: ~Jhellico \n" +"PO-Revision-Date: 2025-10-04 11:31+0700\n" +"Last-Translator: PPsyrius \n" "Language-Team: Holidays Localization Team\n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: pygettext.py 1.5\n" -"X-Generator: Poedit 3.4\n" +"X-Generator: Poedit 3.7\n" "X-Source-Language: de\n" #. New Year's Day. @@ -121,3 +121,11 @@ msgstr "Santi Pietro e Paolo" #. Prayer Monday. msgid "Bettagsmontag" msgstr "Digiuno Ginevrino" + +#. Knabenschiessen. +msgid "Knabenschiessen" +msgstr "Knabenschiessen" + +#. Sechseläuten. +msgid "Sechseläuten" +msgstr "Sechseläuten" diff --git a/holidays/locale/th/LC_MESSAGES/CH.po b/holidays/locale/th/LC_MESSAGES/CH.po new file mode 100644 index 0000000000..2bd5bf3673 --- /dev/null +++ b/holidays/locale/th/LC_MESSAGES/CH.po @@ -0,0 +1,132 @@ +# 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 (c) 2017-2023 +# ryanss (c) 2014-2017 +# Website: https://github.com/vacanza/holidays +# License: MIT (see LICENSE file) +# +# Switzerland holidays th localization. +# +msgid "" +msgstr "" +"Project-Id-Version: Holidays 0.82\n" +"POT-Creation-Date: 2025-10-02 15:36+0700\n" +"PO-Revision-Date: 2025-10-04 11:31+0700\n" +"Last-Translator: PPsyrius \n" +"Language-Team: Holidays Localization Team\n" +"Language: th\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Lingva 5.0.6\n" +"X-Generator: Poedit 3.7\n" +"X-Source-Language: de\n" + +#. New Year's Day. +msgid "Neujahrstag" +msgstr "วันขึ้นปีใหม่" + +#. Ascension Day. +msgid "Auffahrt" +msgstr "วันสมโภชพระเยซูเจ้าเสด็จขึ้นสวรรค์" + +#. National Day. +msgid "Nationalfeiertag" +msgstr "วันชาติสวิตเซอร์แลนด์" + +#. Christmas Day. +msgid "Weihnachten" +msgstr "วันคริสต์มาส" + +#. Saint Berchtold's Day. +msgid "Berchtoldstag" +msgstr "วันสมโภชนักบุญแบร์กโทลด์" + +#. Good Friday. +msgid "Karfreitag" +msgstr "วันศุกร์ประเสริฐ" + +#. Easter Monday. +msgid "Ostermontag" +msgstr "วันจันทร์อีสเตอร์" + +#. Labor Day. +msgid "Tag der Arbeit" +msgstr "วันแรงงาน" + +#. Whit Monday. +msgid "Pfingstmontag" +msgstr "วันจันทร์หลังวันสมโภชพระจิตเจ้า" + +#. Corpus Christi. +msgid "Fronleichnam" +msgstr "วันสมโภชพระคริสตวรกาย" + +#. Assumption Day. +msgid "Mariä Himmelfahrt" +msgstr "วันสมโภชแม่พระรับเกียรติยกขึ้นสวรรค์" + +#. All Saints' Day. +msgid "Allerheiligen" +msgstr "วันสมโภชนักบุญทั้งหลาย" + +#. Immaculate Conception. +msgid "Mariä Empfängnis" +msgstr "วันสมโภชแม่พระผู้ปฏิสนธินิรมล" + +#. Saint Stephen's Day. +msgid "Stephanstag" +msgstr "วันสมโภชนักบุญสเตเฟน" + +#. Genevan Fast. +msgid "Genfer Bettag" +msgstr "วันถือศีลอดเจนีวา" + +#. Restoration Day. +msgid "Wiederherstellung der Republik" +msgstr "วันกอบกู้เอกราชสาธารณรัฐเจนีวา" + +#. Battle of Naefels Victory Day. +msgid "Näfelser Fahrt" +msgstr "วันรำลึกชัยชนะยุทธการเนเฟลส์" + +#. Independence Day. +msgid "Fest der Unabhängigkeit" +msgstr "วันประกาศเอกราชจูรา" + +#. Republic Day. +msgid "Jahrestag der Ausrufung der Republik" +msgstr "วันครบรอบการสถาปนาสาธารณรัฐนอยชาแตล" + +#. Saint Joseph's Day. +msgid "Josefstag" +msgstr "วันสมโภชนักบุญโยเซฟ" + +#. Saint Nicholas of Flüe. +msgid "Bruder Klaus" +msgstr "วันสมโภชนักบุญนิโคลัสแห่งฟลือเออ" + +#. Epiphany. +msgid "Heilige Drei Könige" +msgstr "วันสมโภชพระคริสต์แสดงองค์" + +#. Saints Peter and Paul. +msgid "Peter und Paul" +msgstr "วันสมโภชนักบุญเปโตรและเปาโล" + +#. Prayer Monday. +msgid "Bettagsmontag" +msgstr "วันจันทร์แห่งการอธิษฐาน" + +#. Knabenschiessen. +msgid "Knabenschiessen" +msgstr "คนาเบนชิสเซน" + +#. Sechseläuten. +msgid "Sechseläuten" +msgstr "เซ็กเซ่ะเล๊าเท่น" diff --git a/holidays/locale/uk/LC_MESSAGES/CH.po b/holidays/locale/uk/LC_MESSAGES/CH.po index 543a6764ac..303164a29f 100644 --- a/holidays/locale/uk/LC_MESSAGES/CH.po +++ b/holidays/locale/uk/LC_MESSAGES/CH.po @@ -13,17 +13,17 @@ # Switzerland holidays uk localization. msgid "" msgstr "" -"Project-Id-Version: Holidays 0.42\n" +"Project-Id-Version: Holidays 0.82\n" "POT-Creation-Date: 2023-04-10 15:41+0300\n" -"PO-Revision-Date: 2024-01-21 14:49+0200\n" -"Last-Translator: ~Jhellico \n" +"PO-Revision-Date: 2025-10-04 11:31+0700\n" +"Last-Translator: PPsyrius \n" "Language-Team: Holidays Localization Team\n" "Language: uk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: pygettext.py 1.5\n" -"X-Generator: Poedit 3.4\n" +"X-Generator: Poedit 3.7\n" "X-Source-Language: de\n" #. New Year's Day. @@ -121,3 +121,11 @@ msgstr "День Святих Петра і Павла" #. Prayer Monday. msgid "Bettagsmontag" msgstr "Молитовний понеділок" + +#. Knabenschiessen. +msgid "Knabenschiessen" +msgstr "Кнабеншісен" + +#. Sechseläuten. +msgid "Sechseläuten" +msgstr "Зексельйотен" diff --git a/snapshots/countries/CH_ZH.json b/snapshots/countries/CH_ZH.json index 97f39759e6..78a2656e31 100644 --- a/snapshots/countries/CH_ZH.json +++ b/snapshots/countries/CH_ZH.json @@ -1,1011 +1,1414 @@ { "1950-01-01": "New Year's Day", "1950-01-02": "Saint Berchtold's Day", + "1950-03-27": "Sechsel\u00e4uten", "1950-04-07": "Good Friday", "1950-04-10": "Easter Monday", "1950-05-01": "Labor Day", "1950-05-18": "Ascension Day", "1950-05-29": "Whit Monday", "1950-08-01": "National Day", + "1950-09-09": "Knabenschiessen", + "1950-09-10": "Knabenschiessen", + "1950-09-11": "Knabenschiessen", "1950-12-25": "Christmas Day", "1950-12-26": "Saint Stephen's Day", "1951-01-01": "New Year's Day", "1951-01-02": "Saint Berchtold's Day", "1951-03-23": "Good Friday", - "1951-03-26": "Easter Monday", + "1951-03-26": "Easter Monday; Sechsel\u00e4uten", "1951-05-01": "Labor Day", "1951-05-03": "Ascension Day", "1951-05-14": "Whit Monday", "1951-08-01": "National Day", + "1951-09-08": "Knabenschiessen", + "1951-09-09": "Knabenschiessen", + "1951-09-10": "Knabenschiessen", "1951-12-25": "Christmas Day", "1951-12-26": "Saint Stephen's Day", "1952-01-01": "New Year's Day", "1952-01-02": "Saint Berchtold's Day", "1952-04-11": "Good Friday", "1952-04-14": "Easter Monday", + "1952-04-21": "Sechsel\u00e4uten", "1952-05-01": "Labor Day", "1952-05-22": "Ascension Day", "1952-06-02": "Whit Monday", "1952-08-01": "National Day", + "1952-09-13": "Knabenschiessen", + "1952-09-14": "Knabenschiessen", + "1952-09-15": "Knabenschiessen", "1952-12-25": "Christmas Day", "1952-12-26": "Saint Stephen's Day", "1953-01-01": "New Year's Day", "1953-01-02": "Saint Berchtold's Day", "1953-04-03": "Good Friday", "1953-04-06": "Easter Monday", + "1953-04-20": "Sechsel\u00e4uten", "1953-05-01": "Labor Day", "1953-05-14": "Ascension Day", "1953-05-25": "Whit Monday", "1953-08-01": "National Day", + "1953-09-12": "Knabenschiessen", + "1953-09-13": "Knabenschiessen", + "1953-09-14": "Knabenschiessen", "1953-12-25": "Christmas Day", "1953-12-26": "Saint Stephen's Day", "1954-01-01": "New Year's Day", "1954-01-02": "Saint Berchtold's Day", "1954-04-16": "Good Friday", "1954-04-19": "Easter Monday", + "1954-04-26": "Sechsel\u00e4uten", "1954-05-01": "Labor Day", "1954-05-27": "Ascension Day", "1954-06-07": "Whit Monday", "1954-08-01": "National Day", + "1954-09-11": "Knabenschiessen", + "1954-09-12": "Knabenschiessen", + "1954-09-13": "Knabenschiessen", "1954-12-25": "Christmas Day", "1954-12-26": "Saint Stephen's Day", "1955-01-01": "New Year's Day", "1955-01-02": "Saint Berchtold's Day", "1955-04-08": "Good Friday", "1955-04-11": "Easter Monday", + "1955-04-18": "Sechsel\u00e4uten", "1955-05-01": "Labor Day", "1955-05-19": "Ascension Day", "1955-05-30": "Whit Monday", "1955-08-01": "National Day", + "1955-09-10": "Knabenschiessen", + "1955-09-11": "Knabenschiessen", + "1955-09-12": "Knabenschiessen", "1955-12-25": "Christmas Day", "1955-12-26": "Saint Stephen's Day", "1956-01-01": "New Year's Day", "1956-01-02": "Saint Berchtold's Day", "1956-03-30": "Good Friday", "1956-04-02": "Easter Monday", + "1956-04-16": "Sechsel\u00e4uten", "1956-05-01": "Labor Day", "1956-05-10": "Ascension Day", "1956-05-21": "Whit Monday", "1956-08-01": "National Day", + "1956-09-08": "Knabenschiessen", + "1956-09-09": "Knabenschiessen", + "1956-09-10": "Knabenschiessen", "1956-12-25": "Christmas Day", "1956-12-26": "Saint Stephen's Day", "1957-01-01": "New Year's Day", "1957-01-02": "Saint Berchtold's Day", + "1957-04-15": "Sechsel\u00e4uten", "1957-04-19": "Good Friday", "1957-04-22": "Easter Monday", "1957-05-01": "Labor Day", "1957-05-30": "Ascension Day", "1957-06-10": "Whit Monday", "1957-08-01": "National Day", + "1957-09-07": "Knabenschiessen", + "1957-09-08": "Knabenschiessen", + "1957-09-09": "Knabenschiessen", "1957-12-25": "Christmas Day", "1957-12-26": "Saint Stephen's Day", "1958-01-01": "New Year's Day", "1958-01-02": "Saint Berchtold's Day", "1958-04-04": "Good Friday", "1958-04-07": "Easter Monday", + "1958-04-21": "Sechsel\u00e4uten", "1958-05-01": "Labor Day", "1958-05-15": "Ascension Day", "1958-05-26": "Whit Monday", "1958-08-01": "National Day", + "1958-09-13": "Knabenschiessen", + "1958-09-14": "Knabenschiessen", + "1958-09-15": "Knabenschiessen", "1958-12-25": "Christmas Day", "1958-12-26": "Saint Stephen's Day", "1959-01-01": "New Year's Day", "1959-01-02": "Saint Berchtold's Day", "1959-03-27": "Good Friday", "1959-03-30": "Easter Monday", + "1959-04-20": "Sechsel\u00e4uten", "1959-05-01": "Labor Day", "1959-05-07": "Ascension Day", "1959-05-18": "Whit Monday", "1959-08-01": "National Day", + "1959-09-12": "Knabenschiessen", + "1959-09-13": "Knabenschiessen", + "1959-09-14": "Knabenschiessen", "1959-12-25": "Christmas Day", "1959-12-26": "Saint Stephen's Day", "1960-01-01": "New Year's Day", "1960-01-02": "Saint Berchtold's Day", "1960-04-15": "Good Friday", "1960-04-18": "Easter Monday", + "1960-04-25": "Sechsel\u00e4uten", "1960-05-01": "Labor Day", "1960-05-26": "Ascension Day", "1960-06-06": "Whit Monday", "1960-08-01": "National Day", + "1960-09-10": "Knabenschiessen", + "1960-09-11": "Knabenschiessen", + "1960-09-12": "Knabenschiessen", "1960-12-25": "Christmas Day", "1960-12-26": "Saint Stephen's Day", "1961-01-01": "New Year's Day", "1961-01-02": "Saint Berchtold's Day", "1961-03-31": "Good Friday", "1961-04-03": "Easter Monday", + "1961-04-17": "Sechsel\u00e4uten", "1961-05-01": "Labor Day", "1961-05-11": "Ascension Day", "1961-05-22": "Whit Monday", "1961-08-01": "National Day", + "1961-09-09": "Knabenschiessen", + "1961-09-10": "Knabenschiessen", + "1961-09-11": "Knabenschiessen", "1961-12-25": "Christmas Day", "1961-12-26": "Saint Stephen's Day", "1962-01-01": "New Year's Day", "1962-01-02": "Saint Berchtold's Day", + "1962-04-16": "Sechsel\u00e4uten", "1962-04-20": "Good Friday", "1962-04-23": "Easter Monday", "1962-05-01": "Labor Day", "1962-05-31": "Ascension Day", "1962-06-11": "Whit Monday", "1962-08-01": "National Day", + "1962-09-08": "Knabenschiessen", + "1962-09-09": "Knabenschiessen", + "1962-09-10": "Knabenschiessen", "1962-12-25": "Christmas Day", "1962-12-26": "Saint Stephen's Day", "1963-01-01": "New Year's Day", "1963-01-02": "Saint Berchtold's Day", "1963-04-12": "Good Friday", "1963-04-15": "Easter Monday", + "1963-04-22": "Sechsel\u00e4uten", "1963-05-01": "Labor Day", "1963-05-23": "Ascension Day", "1963-06-03": "Whit Monday", "1963-08-01": "National Day", + "1963-09-07": "Knabenschiessen", + "1963-09-08": "Knabenschiessen", + "1963-09-09": "Knabenschiessen", "1963-12-25": "Christmas Day", "1963-12-26": "Saint Stephen's Day", "1964-01-01": "New Year's Day", "1964-01-02": "Saint Berchtold's Day", "1964-03-27": "Good Friday", "1964-03-30": "Easter Monday", + "1964-04-20": "Sechsel\u00e4uten", "1964-05-01": "Labor Day", "1964-05-07": "Ascension Day", "1964-05-18": "Whit Monday", "1964-08-01": "National Day", + "1964-09-12": "Knabenschiessen", + "1964-09-13": "Knabenschiessen", + "1964-09-14": "Knabenschiessen", "1964-12-25": "Christmas Day", "1964-12-26": "Saint Stephen's Day", "1965-01-01": "New Year's Day", "1965-01-02": "Saint Berchtold's Day", "1965-04-16": "Good Friday", "1965-04-19": "Easter Monday", + "1965-04-26": "Sechsel\u00e4uten", "1965-05-01": "Labor Day", "1965-05-27": "Ascension Day", "1965-06-07": "Whit Monday", "1965-08-01": "National Day", + "1965-09-11": "Knabenschiessen", + "1965-09-12": "Knabenschiessen", + "1965-09-13": "Knabenschiessen", "1965-12-25": "Christmas Day", "1965-12-26": "Saint Stephen's Day", "1966-01-01": "New Year's Day", "1966-01-02": "Saint Berchtold's Day", "1966-04-08": "Good Friday", "1966-04-11": "Easter Monday", + "1966-04-18": "Sechsel\u00e4uten", "1966-05-01": "Labor Day", "1966-05-19": "Ascension Day", "1966-05-30": "Whit Monday", "1966-08-01": "National Day", + "1966-09-10": "Knabenschiessen", + "1966-09-11": "Knabenschiessen", + "1966-09-12": "Knabenschiessen", "1966-12-25": "Christmas Day", "1966-12-26": "Saint Stephen's Day", "1967-01-01": "New Year's Day", "1967-01-02": "Saint Berchtold's Day", "1967-03-24": "Good Friday", "1967-03-27": "Easter Monday", + "1967-04-17": "Sechsel\u00e4uten", "1967-05-01": "Labor Day", "1967-05-04": "Ascension Day", "1967-05-15": "Whit Monday", "1967-08-01": "National Day", + "1967-09-09": "Knabenschiessen", + "1967-09-10": "Knabenschiessen", + "1967-09-11": "Knabenschiessen", "1967-12-25": "Christmas Day", "1967-12-26": "Saint Stephen's Day", "1968-01-01": "New Year's Day", "1968-01-02": "Saint Berchtold's Day", "1968-04-12": "Good Friday", "1968-04-15": "Easter Monday", + "1968-04-22": "Sechsel\u00e4uten", "1968-05-01": "Labor Day", "1968-05-23": "Ascension Day", "1968-06-03": "Whit Monday", "1968-08-01": "National Day", + "1968-09-07": "Knabenschiessen", + "1968-09-08": "Knabenschiessen", + "1968-09-09": "Knabenschiessen", "1968-12-25": "Christmas Day", "1968-12-26": "Saint Stephen's Day", "1969-01-01": "New Year's Day", "1969-01-02": "Saint Berchtold's Day", "1969-04-04": "Good Friday", "1969-04-07": "Easter Monday", + "1969-04-21": "Sechsel\u00e4uten", "1969-05-01": "Labor Day", "1969-05-15": "Ascension Day", "1969-05-26": "Whit Monday", "1969-08-01": "National Day", + "1969-09-13": "Knabenschiessen", + "1969-09-14": "Knabenschiessen", + "1969-09-15": "Knabenschiessen", "1969-12-25": "Christmas Day", "1969-12-26": "Saint Stephen's Day", "1970-01-01": "New Year's Day", "1970-01-02": "Saint Berchtold's Day", "1970-03-27": "Good Friday", "1970-03-30": "Easter Monday", + "1970-04-20": "Sechsel\u00e4uten", "1970-05-01": "Labor Day", "1970-05-07": "Ascension Day", "1970-05-18": "Whit Monday", "1970-08-01": "National Day", + "1970-09-12": "Knabenschiessen", + "1970-09-13": "Knabenschiessen", + "1970-09-14": "Knabenschiessen", "1970-12-25": "Christmas Day", "1970-12-26": "Saint Stephen's Day", "1971-01-01": "New Year's Day", "1971-01-02": "Saint Berchtold's Day", "1971-04-09": "Good Friday", "1971-04-12": "Easter Monday", + "1971-04-19": "Sechsel\u00e4uten", "1971-05-01": "Labor Day", "1971-05-20": "Ascension Day", "1971-05-31": "Whit Monday", "1971-08-01": "National Day", + "1971-09-11": "Knabenschiessen", + "1971-09-12": "Knabenschiessen", + "1971-09-13": "Knabenschiessen", "1971-12-25": "Christmas Day", "1971-12-26": "Saint Stephen's Day", "1972-01-01": "New Year's Day", "1972-01-02": "Saint Berchtold's Day", "1972-03-31": "Good Friday", "1972-04-03": "Easter Monday", + "1972-04-17": "Sechsel\u00e4uten", "1972-05-01": "Labor Day", "1972-05-11": "Ascension Day", "1972-05-22": "Whit Monday", "1972-08-01": "National Day", + "1972-09-09": "Knabenschiessen", + "1972-09-10": "Knabenschiessen", + "1972-09-11": "Knabenschiessen", "1972-12-25": "Christmas Day", "1972-12-26": "Saint Stephen's Day", "1973-01-01": "New Year's Day", "1973-01-02": "Saint Berchtold's Day", + "1973-04-16": "Sechsel\u00e4uten", "1973-04-20": "Good Friday", "1973-04-23": "Easter Monday", "1973-05-01": "Labor Day", "1973-05-31": "Ascension Day", "1973-06-11": "Whit Monday", "1973-08-01": "National Day", + "1973-09-08": "Knabenschiessen", + "1973-09-09": "Knabenschiessen", + "1973-09-10": "Knabenschiessen", "1973-12-25": "Christmas Day", "1973-12-26": "Saint Stephen's Day", "1974-01-01": "New Year's Day", "1974-01-02": "Saint Berchtold's Day", "1974-04-12": "Good Friday", "1974-04-15": "Easter Monday", + "1974-04-22": "Sechsel\u00e4uten", "1974-05-01": "Labor Day", "1974-05-23": "Ascension Day", "1974-06-03": "Whit Monday", "1974-08-01": "National Day", + "1974-09-07": "Knabenschiessen", + "1974-09-08": "Knabenschiessen", + "1974-09-09": "Knabenschiessen", "1974-12-25": "Christmas Day", "1974-12-26": "Saint Stephen's Day", "1975-01-01": "New Year's Day", "1975-01-02": "Saint Berchtold's Day", "1975-03-28": "Good Friday", "1975-03-31": "Easter Monday", + "1975-04-21": "Sechsel\u00e4uten", "1975-05-01": "Labor Day", "1975-05-08": "Ascension Day", "1975-05-19": "Whit Monday", "1975-08-01": "National Day", + "1975-09-13": "Knabenschiessen", + "1975-09-14": "Knabenschiessen", + "1975-09-15": "Knabenschiessen", "1975-12-25": "Christmas Day", "1975-12-26": "Saint Stephen's Day", "1976-01-01": "New Year's Day", "1976-01-02": "Saint Berchtold's Day", "1976-04-16": "Good Friday", "1976-04-19": "Easter Monday", + "1976-04-26": "Sechsel\u00e4uten", "1976-05-01": "Labor Day", "1976-05-27": "Ascension Day", "1976-06-07": "Whit Monday", "1976-08-01": "National Day", + "1976-09-11": "Knabenschiessen", + "1976-09-12": "Knabenschiessen", + "1976-09-13": "Knabenschiessen", "1976-12-25": "Christmas Day", "1976-12-26": "Saint Stephen's Day", "1977-01-01": "New Year's Day", "1977-01-02": "Saint Berchtold's Day", "1977-04-08": "Good Friday", "1977-04-11": "Easter Monday", + "1977-04-18": "Sechsel\u00e4uten", "1977-05-01": "Labor Day", "1977-05-19": "Ascension Day", "1977-05-30": "Whit Monday", "1977-08-01": "National Day", + "1977-09-10": "Knabenschiessen", + "1977-09-11": "Knabenschiessen", + "1977-09-12": "Knabenschiessen", "1977-12-25": "Christmas Day", "1977-12-26": "Saint Stephen's Day", "1978-01-01": "New Year's Day", "1978-01-02": "Saint Berchtold's Day", "1978-03-24": "Good Friday", "1978-03-27": "Easter Monday", + "1978-04-17": "Sechsel\u00e4uten", "1978-05-01": "Labor Day", "1978-05-04": "Ascension Day", "1978-05-15": "Whit Monday", "1978-08-01": "National Day", + "1978-09-09": "Knabenschiessen", + "1978-09-10": "Knabenschiessen", + "1978-09-11": "Knabenschiessen", "1978-12-25": "Christmas Day", "1978-12-26": "Saint Stephen's Day", "1979-01-01": "New Year's Day", "1979-01-02": "Saint Berchtold's Day", "1979-04-13": "Good Friday", "1979-04-16": "Easter Monday", + "1979-04-23": "Sechsel\u00e4uten", "1979-05-01": "Labor Day", "1979-05-24": "Ascension Day", "1979-06-04": "Whit Monday", "1979-08-01": "National Day", + "1979-09-08": "Knabenschiessen", + "1979-09-09": "Knabenschiessen", + "1979-09-10": "Knabenschiessen", "1979-12-25": "Christmas Day", "1979-12-26": "Saint Stephen's Day", "1980-01-01": "New Year's Day", "1980-01-02": "Saint Berchtold's Day", "1980-04-04": "Good Friday", "1980-04-07": "Easter Monday", + "1980-04-21": "Sechsel\u00e4uten", "1980-05-01": "Labor Day", "1980-05-15": "Ascension Day", "1980-05-26": "Whit Monday", "1980-08-01": "National Day", + "1980-09-13": "Knabenschiessen", + "1980-09-14": "Knabenschiessen", + "1980-09-15": "Knabenschiessen", "1980-12-25": "Christmas Day", "1980-12-26": "Saint Stephen's Day", "1981-01-01": "New Year's Day", "1981-01-02": "Saint Berchtold's Day", "1981-04-17": "Good Friday", "1981-04-20": "Easter Monday", + "1981-04-27": "Sechsel\u00e4uten", "1981-05-01": "Labor Day", "1981-05-28": "Ascension Day", "1981-06-08": "Whit Monday", "1981-08-01": "National Day", + "1981-09-12": "Knabenschiessen", + "1981-09-13": "Knabenschiessen", + "1981-09-14": "Knabenschiessen", "1981-12-25": "Christmas Day", "1981-12-26": "Saint Stephen's Day", "1982-01-01": "New Year's Day", "1982-01-02": "Saint Berchtold's Day", "1982-04-09": "Good Friday", "1982-04-12": "Easter Monday", + "1982-04-19": "Sechsel\u00e4uten", "1982-05-01": "Labor Day", "1982-05-20": "Ascension Day", "1982-05-31": "Whit Monday", "1982-08-01": "National Day", + "1982-09-11": "Knabenschiessen", + "1982-09-12": "Knabenschiessen", + "1982-09-13": "Knabenschiessen", "1982-12-25": "Christmas Day", "1982-12-26": "Saint Stephen's Day", "1983-01-01": "New Year's Day", "1983-01-02": "Saint Berchtold's Day", "1983-04-01": "Good Friday", "1983-04-04": "Easter Monday", + "1983-04-18": "Sechsel\u00e4uten", "1983-05-01": "Labor Day", "1983-05-12": "Ascension Day", "1983-05-23": "Whit Monday", "1983-08-01": "National Day", + "1983-09-10": "Knabenschiessen", + "1983-09-11": "Knabenschiessen", + "1983-09-12": "Knabenschiessen", "1983-12-25": "Christmas Day", "1983-12-26": "Saint Stephen's Day", "1984-01-01": "New Year's Day", "1984-01-02": "Saint Berchtold's Day", + "1984-04-16": "Sechsel\u00e4uten", "1984-04-20": "Good Friday", "1984-04-23": "Easter Monday", "1984-05-01": "Labor Day", "1984-05-31": "Ascension Day", "1984-06-11": "Whit Monday", "1984-08-01": "National Day", + "1984-09-08": "Knabenschiessen", + "1984-09-09": "Knabenschiessen", + "1984-09-10": "Knabenschiessen", "1984-12-25": "Christmas Day", "1984-12-26": "Saint Stephen's Day", "1985-01-01": "New Year's Day", "1985-01-02": "Saint Berchtold's Day", "1985-04-05": "Good Friday", "1985-04-08": "Easter Monday", + "1985-04-15": "Sechsel\u00e4uten", "1985-05-01": "Labor Day", "1985-05-16": "Ascension Day", "1985-05-27": "Whit Monday", "1985-08-01": "National Day", + "1985-09-07": "Knabenschiessen", + "1985-09-08": "Knabenschiessen", + "1985-09-09": "Knabenschiessen", "1985-12-25": "Christmas Day", "1985-12-26": "Saint Stephen's Day", "1986-01-01": "New Year's Day", "1986-01-02": "Saint Berchtold's Day", "1986-03-28": "Good Friday", "1986-03-31": "Easter Monday", + "1986-04-21": "Sechsel\u00e4uten", "1986-05-01": "Labor Day", "1986-05-08": "Ascension Day", "1986-05-19": "Whit Monday", "1986-08-01": "National Day", + "1986-09-13": "Knabenschiessen", + "1986-09-14": "Knabenschiessen", + "1986-09-15": "Knabenschiessen", "1986-12-25": "Christmas Day", "1986-12-26": "Saint Stephen's Day", "1987-01-01": "New Year's Day", "1987-01-02": "Saint Berchtold's Day", "1987-04-17": "Good Friday", "1987-04-20": "Easter Monday", + "1987-04-27": "Sechsel\u00e4uten", "1987-05-01": "Labor Day", "1987-05-28": "Ascension Day", "1987-06-08": "Whit Monday", "1987-08-01": "National Day", + "1987-09-12": "Knabenschiessen", + "1987-09-13": "Knabenschiessen", + "1987-09-14": "Knabenschiessen", "1987-12-25": "Christmas Day", "1987-12-26": "Saint Stephen's Day", "1988-01-01": "New Year's Day", "1988-01-02": "Saint Berchtold's Day", "1988-04-01": "Good Friday", "1988-04-04": "Easter Monday", + "1988-04-18": "Sechsel\u00e4uten", "1988-05-01": "Labor Day", "1988-05-12": "Ascension Day", "1988-05-23": "Whit Monday", "1988-08-01": "National Day", + "1988-09-10": "Knabenschiessen", + "1988-09-11": "Knabenschiessen", + "1988-09-12": "Knabenschiessen", "1988-12-25": "Christmas Day", "1988-12-26": "Saint Stephen's Day", "1989-01-01": "New Year's Day", "1989-01-02": "Saint Berchtold's Day", "1989-03-24": "Good Friday", "1989-03-27": "Easter Monday", + "1989-04-17": "Sechsel\u00e4uten", "1989-05-01": "Labor Day", "1989-05-04": "Ascension Day", "1989-05-15": "Whit Monday", "1989-08-01": "National Day", + "1989-09-09": "Knabenschiessen", + "1989-09-10": "Knabenschiessen", + "1989-09-11": "Knabenschiessen", "1989-12-25": "Christmas Day", "1989-12-26": "Saint Stephen's Day", "1990-01-01": "New Year's Day", "1990-01-02": "Saint Berchtold's Day", "1990-04-13": "Good Friday", "1990-04-16": "Easter Monday", + "1990-04-23": "Sechsel\u00e4uten", "1990-05-01": "Labor Day", "1990-05-24": "Ascension Day", "1990-06-04": "Whit Monday", "1990-08-01": "National Day", + "1990-09-08": "Knabenschiessen", + "1990-09-09": "Knabenschiessen", + "1990-09-10": "Knabenschiessen", "1990-12-25": "Christmas Day", "1990-12-26": "Saint Stephen's Day", "1991-01-01": "New Year's Day", "1991-01-02": "Saint Berchtold's Day", "1991-03-29": "Good Friday", "1991-04-01": "Easter Monday", + "1991-04-15": "Sechsel\u00e4uten", "1991-05-01": "Labor Day", "1991-05-09": "Ascension Day", "1991-05-20": "Whit Monday", "1991-08-01": "National Day", + "1991-09-07": "Knabenschiessen", + "1991-09-08": "Knabenschiessen", + "1991-09-09": "Knabenschiessen", "1991-12-25": "Christmas Day", "1991-12-26": "Saint Stephen's Day", "1992-01-01": "New Year's Day", "1992-01-02": "Saint Berchtold's Day", "1992-04-17": "Good Friday", "1992-04-20": "Easter Monday", + "1992-04-27": "Sechsel\u00e4uten", "1992-05-01": "Labor Day", "1992-05-28": "Ascension Day", "1992-06-08": "Whit Monday", "1992-08-01": "National Day", + "1992-09-12": "Knabenschiessen", + "1992-09-13": "Knabenschiessen", + "1992-09-14": "Knabenschiessen", "1992-12-25": "Christmas Day", "1992-12-26": "Saint Stephen's Day", "1993-01-01": "New Year's Day", "1993-01-02": "Saint Berchtold's Day", "1993-04-09": "Good Friday", "1993-04-12": "Easter Monday", + "1993-04-19": "Sechsel\u00e4uten", "1993-05-01": "Labor Day", "1993-05-20": "Ascension Day", "1993-05-31": "Whit Monday", "1993-08-01": "National Day", + "1993-09-11": "Knabenschiessen", + "1993-09-12": "Knabenschiessen", + "1993-09-13": "Knabenschiessen", "1993-12-25": "Christmas Day", "1993-12-26": "Saint Stephen's Day", "1994-01-01": "New Year's Day", "1994-01-02": "Saint Berchtold's Day", "1994-04-01": "Good Friday", "1994-04-04": "Easter Monday", + "1994-04-18": "Sechsel\u00e4uten", "1994-05-01": "Labor Day", "1994-05-12": "Ascension Day", "1994-05-23": "Whit Monday", "1994-08-01": "National Day", + "1994-09-10": "Knabenschiessen", + "1994-09-11": "Knabenschiessen", + "1994-09-12": "Knabenschiessen", "1994-12-25": "Christmas Day", "1994-12-26": "Saint Stephen's Day", "1995-01-01": "New Year's Day", "1995-01-02": "Saint Berchtold's Day", "1995-04-14": "Good Friday", "1995-04-17": "Easter Monday", + "1995-04-24": "Sechsel\u00e4uten", "1995-05-01": "Labor Day", "1995-05-25": "Ascension Day", "1995-06-05": "Whit Monday", "1995-08-01": "National Day", + "1995-09-09": "Knabenschiessen", + "1995-09-10": "Knabenschiessen", + "1995-09-11": "Knabenschiessen", "1995-12-25": "Christmas Day", "1995-12-26": "Saint Stephen's Day", "1996-01-01": "New Year's Day", "1996-01-02": "Saint Berchtold's Day", "1996-04-05": "Good Friday", "1996-04-08": "Easter Monday", + "1996-04-15": "Sechsel\u00e4uten", "1996-05-01": "Labor Day", "1996-05-16": "Ascension Day", "1996-05-27": "Whit Monday", "1996-08-01": "National Day", + "1996-09-07": "Knabenschiessen", + "1996-09-08": "Knabenschiessen", + "1996-09-09": "Knabenschiessen", "1996-12-25": "Christmas Day", "1996-12-26": "Saint Stephen's Day", "1997-01-01": "New Year's Day", "1997-01-02": "Saint Berchtold's Day", "1997-03-28": "Good Friday", "1997-03-31": "Easter Monday", + "1997-04-21": "Sechsel\u00e4uten", "1997-05-01": "Labor Day", "1997-05-08": "Ascension Day", "1997-05-19": "Whit Monday", "1997-08-01": "National Day", + "1997-09-13": "Knabenschiessen", + "1997-09-14": "Knabenschiessen", + "1997-09-15": "Knabenschiessen", "1997-12-25": "Christmas Day", "1997-12-26": "Saint Stephen's Day", "1998-01-01": "New Year's Day", "1998-01-02": "Saint Berchtold's Day", "1998-04-10": "Good Friday", "1998-04-13": "Easter Monday", + "1998-04-20": "Sechsel\u00e4uten", "1998-05-01": "Labor Day", "1998-05-21": "Ascension Day", "1998-06-01": "Whit Monday", "1998-08-01": "National Day", + "1998-09-12": "Knabenschiessen", + "1998-09-13": "Knabenschiessen", + "1998-09-14": "Knabenschiessen", "1998-12-25": "Christmas Day", "1998-12-26": "Saint Stephen's Day", "1999-01-01": "New Year's Day", "1999-01-02": "Saint Berchtold's Day", "1999-04-02": "Good Friday", "1999-04-05": "Easter Monday", + "1999-04-19": "Sechsel\u00e4uten", "1999-05-01": "Labor Day", "1999-05-13": "Ascension Day", "1999-05-24": "Whit Monday", "1999-08-01": "National Day", + "1999-09-11": "Knabenschiessen", + "1999-09-12": "Knabenschiessen", + "1999-09-13": "Knabenschiessen", "1999-12-25": "Christmas Day", "1999-12-26": "Saint Stephen's Day", "2000-01-01": "New Year's Day", "2000-01-02": "Saint Berchtold's Day", + "2000-04-17": "Sechsel\u00e4uten", "2000-04-21": "Good Friday", "2000-04-24": "Easter Monday", "2000-05-01": "Labor Day", "2000-06-01": "Ascension Day", "2000-06-12": "Whit Monday", "2000-08-01": "National Day", + "2000-09-09": "Knabenschiessen", + "2000-09-10": "Knabenschiessen", + "2000-09-11": "Knabenschiessen", "2000-12-25": "Christmas Day", "2000-12-26": "Saint Stephen's Day", "2001-01-01": "New Year's Day", "2001-01-02": "Saint Berchtold's Day", "2001-04-13": "Good Friday", "2001-04-16": "Easter Monday", + "2001-04-23": "Sechsel\u00e4uten", "2001-05-01": "Labor Day", "2001-05-24": "Ascension Day", "2001-06-04": "Whit Monday", "2001-08-01": "National Day", + "2001-09-08": "Knabenschiessen", + "2001-09-09": "Knabenschiessen", + "2001-09-10": "Knabenschiessen", "2001-12-25": "Christmas Day", "2001-12-26": "Saint Stephen's Day", "2002-01-01": "New Year's Day", "2002-01-02": "Saint Berchtold's Day", "2002-03-29": "Good Friday", "2002-04-01": "Easter Monday", + "2002-04-15": "Sechsel\u00e4uten", "2002-05-01": "Labor Day", "2002-05-09": "Ascension Day", "2002-05-20": "Whit Monday", "2002-08-01": "National Day", + "2002-09-07": "Knabenschiessen", + "2002-09-08": "Knabenschiessen", + "2002-09-09": "Knabenschiessen", "2002-12-25": "Christmas Day", "2002-12-26": "Saint Stephen's Day", "2003-01-01": "New Year's Day", "2003-01-02": "Saint Berchtold's Day", "2003-04-18": "Good Friday", "2003-04-21": "Easter Monday", + "2003-04-28": "Sechsel\u00e4uten", "2003-05-01": "Labor Day", "2003-05-29": "Ascension Day", "2003-06-09": "Whit Monday", "2003-08-01": "National Day", + "2003-09-13": "Knabenschiessen", + "2003-09-14": "Knabenschiessen", + "2003-09-15": "Knabenschiessen", "2003-12-25": "Christmas Day", "2003-12-26": "Saint Stephen's Day", "2004-01-01": "New Year's Day", "2004-01-02": "Saint Berchtold's Day", "2004-04-09": "Good Friday", "2004-04-12": "Easter Monday", + "2004-04-19": "Sechsel\u00e4uten", "2004-05-01": "Labor Day", "2004-05-20": "Ascension Day", "2004-05-31": "Whit Monday", "2004-08-01": "National Day", + "2004-09-11": "Knabenschiessen", + "2004-09-12": "Knabenschiessen", + "2004-09-13": "Knabenschiessen", "2004-12-25": "Christmas Day", "2004-12-26": "Saint Stephen's Day", "2005-01-01": "New Year's Day", "2005-01-02": "Saint Berchtold's Day", "2005-03-25": "Good Friday", "2005-03-28": "Easter Monday", + "2005-04-18": "Sechsel\u00e4uten", "2005-05-01": "Labor Day", "2005-05-05": "Ascension Day", "2005-05-16": "Whit Monday", "2005-08-01": "National Day", + "2005-09-10": "Knabenschiessen", + "2005-09-11": "Knabenschiessen", + "2005-09-12": "Knabenschiessen", "2005-12-25": "Christmas Day", "2005-12-26": "Saint Stephen's Day", "2006-01-01": "New Year's Day", "2006-01-02": "Saint Berchtold's Day", "2006-04-14": "Good Friday", "2006-04-17": "Easter Monday", + "2006-04-24": "Sechsel\u00e4uten", "2006-05-01": "Labor Day", "2006-05-25": "Ascension Day", "2006-06-05": "Whit Monday", "2006-08-01": "National Day", + "2006-09-09": "Knabenschiessen", + "2006-09-10": "Knabenschiessen", + "2006-09-11": "Knabenschiessen", "2006-12-25": "Christmas Day", "2006-12-26": "Saint Stephen's Day", "2007-01-01": "New Year's Day", "2007-01-02": "Saint Berchtold's Day", "2007-04-06": "Good Friday", "2007-04-09": "Easter Monday", + "2007-04-16": "Sechsel\u00e4uten", "2007-05-01": "Labor Day", "2007-05-17": "Ascension Day", "2007-05-28": "Whit Monday", "2007-08-01": "National Day", + "2007-09-08": "Knabenschiessen", + "2007-09-09": "Knabenschiessen", + "2007-09-10": "Knabenschiessen", "2007-12-25": "Christmas Day", "2007-12-26": "Saint Stephen's Day", "2008-01-01": "New Year's Day", "2008-01-02": "Saint Berchtold's Day", "2008-03-21": "Good Friday", "2008-03-24": "Easter Monday", + "2008-04-21": "Sechsel\u00e4uten", "2008-05-01": "Ascension Day; Labor Day", "2008-05-12": "Whit Monday", "2008-08-01": "National Day", + "2008-09-13": "Knabenschiessen", + "2008-09-14": "Knabenschiessen", + "2008-09-15": "Knabenschiessen", "2008-12-25": "Christmas Day", "2008-12-26": "Saint Stephen's Day", "2009-01-01": "New Year's Day", "2009-01-02": "Saint Berchtold's Day", "2009-04-10": "Good Friday", "2009-04-13": "Easter Monday", + "2009-04-20": "Sechsel\u00e4uten", "2009-05-01": "Labor Day", "2009-05-21": "Ascension Day", "2009-06-01": "Whit Monday", "2009-08-01": "National Day", + "2009-09-12": "Knabenschiessen", + "2009-09-13": "Knabenschiessen", + "2009-09-14": "Knabenschiessen", "2009-12-25": "Christmas Day", "2009-12-26": "Saint Stephen's Day", "2010-01-01": "New Year's Day", "2010-01-02": "Saint Berchtold's Day", "2010-04-02": "Good Friday", "2010-04-05": "Easter Monday", + "2010-04-19": "Sechsel\u00e4uten", "2010-05-01": "Labor Day", "2010-05-13": "Ascension Day", "2010-05-24": "Whit Monday", "2010-08-01": "National Day", + "2010-09-11": "Knabenschiessen", + "2010-09-12": "Knabenschiessen", + "2010-09-13": "Knabenschiessen", "2010-12-25": "Christmas Day", "2010-12-26": "Saint Stephen's Day", "2011-01-01": "New Year's Day", "2011-01-02": "Saint Berchtold's Day", + "2011-04-18": "Sechsel\u00e4uten", "2011-04-22": "Good Friday", "2011-04-25": "Easter Monday", "2011-05-01": "Labor Day", "2011-06-02": "Ascension Day", "2011-06-13": "Whit Monday", "2011-08-01": "National Day", + "2011-09-10": "Knabenschiessen", + "2011-09-11": "Knabenschiessen", + "2011-09-12": "Knabenschiessen", "2011-12-25": "Christmas Day", "2011-12-26": "Saint Stephen's Day", "2012-01-01": "New Year's Day", "2012-01-02": "Saint Berchtold's Day", "2012-04-06": "Good Friday", "2012-04-09": "Easter Monday", + "2012-04-16": "Sechsel\u00e4uten", "2012-05-01": "Labor Day", "2012-05-17": "Ascension Day", "2012-05-28": "Whit Monday", "2012-08-01": "National Day", + "2012-09-08": "Knabenschiessen", + "2012-09-09": "Knabenschiessen", + "2012-09-10": "Knabenschiessen", "2012-12-25": "Christmas Day", "2012-12-26": "Saint Stephen's Day", "2013-01-01": "New Year's Day", "2013-01-02": "Saint Berchtold's Day", "2013-03-29": "Good Friday", "2013-04-01": "Easter Monday", + "2013-04-15": "Sechsel\u00e4uten", "2013-05-01": "Labor Day", "2013-05-09": "Ascension Day", "2013-05-20": "Whit Monday", "2013-08-01": "National Day", + "2013-09-07": "Knabenschiessen", + "2013-09-08": "Knabenschiessen", + "2013-09-09": "Knabenschiessen", "2013-12-25": "Christmas Day", "2013-12-26": "Saint Stephen's Day", "2014-01-01": "New Year's Day", "2014-01-02": "Saint Berchtold's Day", "2014-04-18": "Good Friday", "2014-04-21": "Easter Monday", + "2014-04-28": "Sechsel\u00e4uten", "2014-05-01": "Labor Day", "2014-05-29": "Ascension Day", "2014-06-09": "Whit Monday", "2014-08-01": "National Day", + "2014-09-13": "Knabenschiessen", + "2014-09-14": "Knabenschiessen", + "2014-09-15": "Knabenschiessen", "2014-12-25": "Christmas Day", "2014-12-26": "Saint Stephen's Day", "2015-01-01": "New Year's Day", "2015-01-02": "Saint Berchtold's Day", "2015-04-03": "Good Friday", "2015-04-06": "Easter Monday", + "2015-04-20": "Sechsel\u00e4uten", "2015-05-01": "Labor Day", "2015-05-14": "Ascension Day", "2015-05-25": "Whit Monday", "2015-08-01": "National Day", + "2015-09-12": "Knabenschiessen", + "2015-09-13": "Knabenschiessen", + "2015-09-14": "Knabenschiessen", "2015-12-25": "Christmas Day", "2015-12-26": "Saint Stephen's Day", "2016-01-01": "New Year's Day", "2016-01-02": "Saint Berchtold's Day", "2016-03-25": "Good Friday", "2016-03-28": "Easter Monday", + "2016-04-18": "Sechsel\u00e4uten", "2016-05-01": "Labor Day", "2016-05-05": "Ascension Day", "2016-05-16": "Whit Monday", "2016-08-01": "National Day", + "2016-09-10": "Knabenschiessen", + "2016-09-11": "Knabenschiessen", + "2016-09-12": "Knabenschiessen", "2016-12-25": "Christmas Day", "2016-12-26": "Saint Stephen's Day", "2017-01-01": "New Year's Day", "2017-01-02": "Saint Berchtold's Day", "2017-04-14": "Good Friday", "2017-04-17": "Easter Monday", + "2017-04-24": "Sechsel\u00e4uten", "2017-05-01": "Labor Day", "2017-05-25": "Ascension Day", "2017-06-05": "Whit Monday", "2017-08-01": "National Day", + "2017-09-09": "Knabenschiessen", + "2017-09-10": "Knabenschiessen", + "2017-09-11": "Knabenschiessen", "2017-12-25": "Christmas Day", "2017-12-26": "Saint Stephen's Day", "2018-01-01": "New Year's Day", "2018-01-02": "Saint Berchtold's Day", "2018-03-30": "Good Friday", "2018-04-02": "Easter Monday", + "2018-04-16": "Sechsel\u00e4uten", "2018-05-01": "Labor Day", "2018-05-10": "Ascension Day", "2018-05-21": "Whit Monday", "2018-08-01": "National Day", + "2018-09-08": "Knabenschiessen", + "2018-09-09": "Knabenschiessen", + "2018-09-10": "Knabenschiessen", "2018-12-25": "Christmas Day", "2018-12-26": "Saint Stephen's Day", "2019-01-01": "New Year's Day", "2019-01-02": "Saint Berchtold's Day", + "2019-04-15": "Sechsel\u00e4uten", "2019-04-19": "Good Friday", "2019-04-22": "Easter Monday", "2019-05-01": "Labor Day", "2019-05-30": "Ascension Day", "2019-06-10": "Whit Monday", "2019-08-01": "National Day", + "2019-09-07": "Knabenschiessen", + "2019-09-08": "Knabenschiessen", + "2019-09-09": "Knabenschiessen", "2019-12-25": "Christmas Day", "2019-12-26": "Saint Stephen's Day", "2020-01-01": "New Year's Day", "2020-01-02": "Saint Berchtold's Day", "2020-04-10": "Good Friday", "2020-04-13": "Easter Monday", + "2020-04-20": "Sechsel\u00e4uten", "2020-05-01": "Labor Day", "2020-05-21": "Ascension Day", "2020-06-01": "Whit Monday", "2020-08-01": "National Day", + "2020-09-12": "Knabenschiessen", + "2020-09-13": "Knabenschiessen", + "2020-09-14": "Knabenschiessen", "2020-12-25": "Christmas Day", "2020-12-26": "Saint Stephen's Day", "2021-01-01": "New Year's Day", "2021-01-02": "Saint Berchtold's Day", "2021-04-02": "Good Friday", "2021-04-05": "Easter Monday", + "2021-04-19": "Sechsel\u00e4uten", "2021-05-01": "Labor Day", "2021-05-13": "Ascension Day", "2021-05-24": "Whit Monday", "2021-08-01": "National Day", + "2021-09-11": "Knabenschiessen", + "2021-09-12": "Knabenschiessen", + "2021-09-13": "Knabenschiessen", "2021-12-25": "Christmas Day", "2021-12-26": "Saint Stephen's Day", "2022-01-01": "New Year's Day", "2022-01-02": "Saint Berchtold's Day", "2022-04-15": "Good Friday", "2022-04-18": "Easter Monday", + "2022-04-25": "Sechsel\u00e4uten", "2022-05-01": "Labor Day", "2022-05-26": "Ascension Day", "2022-06-06": "Whit Monday", "2022-08-01": "National Day", + "2022-09-10": "Knabenschiessen", + "2022-09-11": "Knabenschiessen", + "2022-09-12": "Knabenschiessen", "2022-12-25": "Christmas Day", "2022-12-26": "Saint Stephen's Day", "2023-01-01": "New Year's Day", "2023-01-02": "Saint Berchtold's Day", "2023-04-07": "Good Friday", "2023-04-10": "Easter Monday", + "2023-04-17": "Sechsel\u00e4uten", "2023-05-01": "Labor Day", "2023-05-18": "Ascension Day", "2023-05-29": "Whit Monday", "2023-08-01": "National Day", + "2023-09-09": "Knabenschiessen", + "2023-09-10": "Knabenschiessen", + "2023-09-11": "Knabenschiessen", "2023-12-25": "Christmas Day", "2023-12-26": "Saint Stephen's Day", "2024-01-01": "New Year's Day", "2024-01-02": "Saint Berchtold's Day", "2024-03-29": "Good Friday", "2024-04-01": "Easter Monday", + "2024-04-15": "Sechsel\u00e4uten", "2024-05-01": "Labor Day", "2024-05-09": "Ascension Day", "2024-05-20": "Whit Monday", "2024-08-01": "National Day", + "2024-09-07": "Knabenschiessen", + "2024-09-08": "Knabenschiessen", + "2024-09-09": "Knabenschiessen", "2024-12-25": "Christmas Day", "2024-12-26": "Saint Stephen's Day", "2025-01-01": "New Year's Day", "2025-01-02": "Saint Berchtold's Day", "2025-04-18": "Good Friday", "2025-04-21": "Easter Monday", + "2025-04-28": "Sechsel\u00e4uten", "2025-05-01": "Labor Day", "2025-05-29": "Ascension Day", "2025-06-09": "Whit Monday", "2025-08-01": "National Day", + "2025-09-13": "Knabenschiessen", + "2025-09-14": "Knabenschiessen", + "2025-09-15": "Knabenschiessen", "2025-12-25": "Christmas Day", "2025-12-26": "Saint Stephen's Day", "2026-01-01": "New Year's Day", "2026-01-02": "Saint Berchtold's Day", "2026-04-03": "Good Friday", "2026-04-06": "Easter Monday", + "2026-04-20": "Sechsel\u00e4uten", "2026-05-01": "Labor Day", "2026-05-14": "Ascension Day", "2026-05-25": "Whit Monday", "2026-08-01": "National Day", + "2026-09-12": "Knabenschiessen", + "2026-09-13": "Knabenschiessen", + "2026-09-14": "Knabenschiessen", "2026-12-25": "Christmas Day", "2026-12-26": "Saint Stephen's Day", "2027-01-01": "New Year's Day", "2027-01-02": "Saint Berchtold's Day", "2027-03-26": "Good Friday", "2027-03-29": "Easter Monday", + "2027-04-19": "Sechsel\u00e4uten", "2027-05-01": "Labor Day", "2027-05-06": "Ascension Day", "2027-05-17": "Whit Monday", "2027-08-01": "National Day", + "2027-09-11": "Knabenschiessen", + "2027-09-12": "Knabenschiessen", + "2027-09-13": "Knabenschiessen", "2027-12-25": "Christmas Day", "2027-12-26": "Saint Stephen's Day", "2028-01-01": "New Year's Day", "2028-01-02": "Saint Berchtold's Day", "2028-04-14": "Good Friday", "2028-04-17": "Easter Monday", + "2028-04-24": "Sechsel\u00e4uten", "2028-05-01": "Labor Day", "2028-05-25": "Ascension Day", "2028-06-05": "Whit Monday", "2028-08-01": "National Day", + "2028-09-09": "Knabenschiessen", + "2028-09-10": "Knabenschiessen", + "2028-09-11": "Knabenschiessen", "2028-12-25": "Christmas Day", "2028-12-26": "Saint Stephen's Day", "2029-01-01": "New Year's Day", "2029-01-02": "Saint Berchtold's Day", "2029-03-30": "Good Friday", "2029-04-02": "Easter Monday", + "2029-04-16": "Sechsel\u00e4uten", "2029-05-01": "Labor Day", "2029-05-10": "Ascension Day", "2029-05-21": "Whit Monday", "2029-08-01": "National Day", + "2029-09-08": "Knabenschiessen", + "2029-09-09": "Knabenschiessen", + "2029-09-10": "Knabenschiessen", "2029-12-25": "Christmas Day", "2029-12-26": "Saint Stephen's Day", "2030-01-01": "New Year's Day", "2030-01-02": "Saint Berchtold's Day", + "2030-04-15": "Sechsel\u00e4uten", "2030-04-19": "Good Friday", "2030-04-22": "Easter Monday", "2030-05-01": "Labor Day", "2030-05-30": "Ascension Day", "2030-06-10": "Whit Monday", "2030-08-01": "National Day", + "2030-09-07": "Knabenschiessen", + "2030-09-08": "Knabenschiessen", + "2030-09-09": "Knabenschiessen", "2030-12-25": "Christmas Day", "2030-12-26": "Saint Stephen's Day", "2031-01-01": "New Year's Day", "2031-01-02": "Saint Berchtold's Day", "2031-04-11": "Good Friday", "2031-04-14": "Easter Monday", + "2031-04-21": "Sechsel\u00e4uten", "2031-05-01": "Labor Day", "2031-05-22": "Ascension Day", "2031-06-02": "Whit Monday", "2031-08-01": "National Day", + "2031-09-13": "Knabenschiessen", + "2031-09-14": "Knabenschiessen", + "2031-09-15": "Knabenschiessen", "2031-12-25": "Christmas Day", "2031-12-26": "Saint Stephen's Day", "2032-01-01": "New Year's Day", "2032-01-02": "Saint Berchtold's Day", "2032-03-26": "Good Friday", "2032-03-29": "Easter Monday", + "2032-04-19": "Sechsel\u00e4uten", "2032-05-01": "Labor Day", "2032-05-06": "Ascension Day", "2032-05-17": "Whit Monday", "2032-08-01": "National Day", + "2032-09-11": "Knabenschiessen", + "2032-09-12": "Knabenschiessen", + "2032-09-13": "Knabenschiessen", "2032-12-25": "Christmas Day", "2032-12-26": "Saint Stephen's Day", "2033-01-01": "New Year's Day", "2033-01-02": "Saint Berchtold's Day", "2033-04-15": "Good Friday", "2033-04-18": "Easter Monday", + "2033-04-25": "Sechsel\u00e4uten", "2033-05-01": "Labor Day", "2033-05-26": "Ascension Day", "2033-06-06": "Whit Monday", "2033-08-01": "National Day", + "2033-09-10": "Knabenschiessen", + "2033-09-11": "Knabenschiessen", + "2033-09-12": "Knabenschiessen", "2033-12-25": "Christmas Day", "2033-12-26": "Saint Stephen's Day", "2034-01-01": "New Year's Day", "2034-01-02": "Saint Berchtold's Day", "2034-04-07": "Good Friday", "2034-04-10": "Easter Monday", + "2034-04-17": "Sechsel\u00e4uten", "2034-05-01": "Labor Day", "2034-05-18": "Ascension Day", "2034-05-29": "Whit Monday", "2034-08-01": "National Day", + "2034-09-09": "Knabenschiessen", + "2034-09-10": "Knabenschiessen", + "2034-09-11": "Knabenschiessen", "2034-12-25": "Christmas Day", "2034-12-26": "Saint Stephen's Day", "2035-01-01": "New Year's Day", "2035-01-02": "Saint Berchtold's Day", "2035-03-23": "Good Friday", "2035-03-26": "Easter Monday", + "2035-04-16": "Sechsel\u00e4uten", "2035-05-01": "Labor Day", "2035-05-03": "Ascension Day", "2035-05-14": "Whit Monday", "2035-08-01": "National Day", + "2035-09-08": "Knabenschiessen", + "2035-09-09": "Knabenschiessen", + "2035-09-10": "Knabenschiessen", "2035-12-25": "Christmas Day", "2035-12-26": "Saint Stephen's Day", "2036-01-01": "New Year's Day", "2036-01-02": "Saint Berchtold's Day", "2036-04-11": "Good Friday", "2036-04-14": "Easter Monday", + "2036-04-21": "Sechsel\u00e4uten", "2036-05-01": "Labor Day", "2036-05-22": "Ascension Day", "2036-06-02": "Whit Monday", "2036-08-01": "National Day", + "2036-09-13": "Knabenschiessen", + "2036-09-14": "Knabenschiessen", + "2036-09-15": "Knabenschiessen", "2036-12-25": "Christmas Day", "2036-12-26": "Saint Stephen's Day", "2037-01-01": "New Year's Day", "2037-01-02": "Saint Berchtold's Day", "2037-04-03": "Good Friday", "2037-04-06": "Easter Monday", + "2037-04-20": "Sechsel\u00e4uten", "2037-05-01": "Labor Day", "2037-05-14": "Ascension Day", "2037-05-25": "Whit Monday", "2037-08-01": "National Day", + "2037-09-12": "Knabenschiessen", + "2037-09-13": "Knabenschiessen", + "2037-09-14": "Knabenschiessen", "2037-12-25": "Christmas Day", "2037-12-26": "Saint Stephen's Day", "2038-01-01": "New Year's Day", "2038-01-02": "Saint Berchtold's Day", + "2038-04-19": "Sechsel\u00e4uten", "2038-04-23": "Good Friday", "2038-04-26": "Easter Monday", "2038-05-01": "Labor Day", "2038-06-03": "Ascension Day", "2038-06-14": "Whit Monday", "2038-08-01": "National Day", + "2038-09-11": "Knabenschiessen", + "2038-09-12": "Knabenschiessen", + "2038-09-13": "Knabenschiessen", "2038-12-25": "Christmas Day", "2038-12-26": "Saint Stephen's Day", "2039-01-01": "New Year's Day", "2039-01-02": "Saint Berchtold's Day", "2039-04-08": "Good Friday", "2039-04-11": "Easter Monday", + "2039-04-18": "Sechsel\u00e4uten", "2039-05-01": "Labor Day", "2039-05-19": "Ascension Day", "2039-05-30": "Whit Monday", "2039-08-01": "National Day", + "2039-09-10": "Knabenschiessen", + "2039-09-11": "Knabenschiessen", + "2039-09-12": "Knabenschiessen", "2039-12-25": "Christmas Day", "2039-12-26": "Saint Stephen's Day", "2040-01-01": "New Year's Day", "2040-01-02": "Saint Berchtold's Day", "2040-03-30": "Good Friday", "2040-04-02": "Easter Monday", + "2040-04-16": "Sechsel\u00e4uten", "2040-05-01": "Labor Day", "2040-05-10": "Ascension Day", "2040-05-21": "Whit Monday", "2040-08-01": "National Day", + "2040-09-08": "Knabenschiessen", + "2040-09-09": "Knabenschiessen", + "2040-09-10": "Knabenschiessen", "2040-12-25": "Christmas Day", "2040-12-26": "Saint Stephen's Day", "2041-01-01": "New Year's Day", "2041-01-02": "Saint Berchtold's Day", + "2041-04-15": "Sechsel\u00e4uten", "2041-04-19": "Good Friday", "2041-04-22": "Easter Monday", "2041-05-01": "Labor Day", "2041-05-30": "Ascension Day", "2041-06-10": "Whit Monday", "2041-08-01": "National Day", + "2041-09-07": "Knabenschiessen", + "2041-09-08": "Knabenschiessen", + "2041-09-09": "Knabenschiessen", "2041-12-25": "Christmas Day", "2041-12-26": "Saint Stephen's Day", "2042-01-01": "New Year's Day", "2042-01-02": "Saint Berchtold's Day", "2042-04-04": "Good Friday", "2042-04-07": "Easter Monday", + "2042-04-21": "Sechsel\u00e4uten", "2042-05-01": "Labor Day", "2042-05-15": "Ascension Day", "2042-05-26": "Whit Monday", "2042-08-01": "National Day", + "2042-09-13": "Knabenschiessen", + "2042-09-14": "Knabenschiessen", + "2042-09-15": "Knabenschiessen", "2042-12-25": "Christmas Day", "2042-12-26": "Saint Stephen's Day", "2043-01-01": "New Year's Day", "2043-01-02": "Saint Berchtold's Day", "2043-03-27": "Good Friday", "2043-03-30": "Easter Monday", + "2043-04-20": "Sechsel\u00e4uten", "2043-05-01": "Labor Day", "2043-05-07": "Ascension Day", "2043-05-18": "Whit Monday", "2043-08-01": "National Day", + "2043-09-12": "Knabenschiessen", + "2043-09-13": "Knabenschiessen", + "2043-09-14": "Knabenschiessen", "2043-12-25": "Christmas Day", "2043-12-26": "Saint Stephen's Day", "2044-01-01": "New Year's Day", "2044-01-02": "Saint Berchtold's Day", "2044-04-15": "Good Friday", "2044-04-18": "Easter Monday", + "2044-04-25": "Sechsel\u00e4uten", "2044-05-01": "Labor Day", "2044-05-26": "Ascension Day", "2044-06-06": "Whit Monday", "2044-08-01": "National Day", + "2044-09-10": "Knabenschiessen", + "2044-09-11": "Knabenschiessen", + "2044-09-12": "Knabenschiessen", "2044-12-25": "Christmas Day", "2044-12-26": "Saint Stephen's Day", "2045-01-01": "New Year's Day", "2045-01-02": "Saint Berchtold's Day", "2045-04-07": "Good Friday", "2045-04-10": "Easter Monday", + "2045-04-17": "Sechsel\u00e4uten", "2045-05-01": "Labor Day", "2045-05-18": "Ascension Day", "2045-05-29": "Whit Monday", "2045-08-01": "National Day", + "2045-09-09": "Knabenschiessen", + "2045-09-10": "Knabenschiessen", + "2045-09-11": "Knabenschiessen", "2045-12-25": "Christmas Day", "2045-12-26": "Saint Stephen's Day", "2046-01-01": "New Year's Day", "2046-01-02": "Saint Berchtold's Day", "2046-03-23": "Good Friday", "2046-03-26": "Easter Monday", + "2046-04-16": "Sechsel\u00e4uten", "2046-05-01": "Labor Day", "2046-05-03": "Ascension Day", "2046-05-14": "Whit Monday", "2046-08-01": "National Day", + "2046-09-08": "Knabenschiessen", + "2046-09-09": "Knabenschiessen", + "2046-09-10": "Knabenschiessen", "2046-12-25": "Christmas Day", "2046-12-26": "Saint Stephen's Day", "2047-01-01": "New Year's Day", "2047-01-02": "Saint Berchtold's Day", "2047-04-12": "Good Friday", "2047-04-15": "Easter Monday", + "2047-04-22": "Sechsel\u00e4uten", "2047-05-01": "Labor Day", "2047-05-23": "Ascension Day", "2047-06-03": "Whit Monday", "2047-08-01": "National Day", + "2047-09-07": "Knabenschiessen", + "2047-09-08": "Knabenschiessen", + "2047-09-09": "Knabenschiessen", "2047-12-25": "Christmas Day", "2047-12-26": "Saint Stephen's Day", "2048-01-01": "New Year's Day", "2048-01-02": "Saint Berchtold's Day", "2048-04-03": "Good Friday", "2048-04-06": "Easter Monday", + "2048-04-20": "Sechsel\u00e4uten", "2048-05-01": "Labor Day", "2048-05-14": "Ascension Day", "2048-05-25": "Whit Monday", "2048-08-01": "National Day", + "2048-09-12": "Knabenschiessen", + "2048-09-13": "Knabenschiessen", + "2048-09-14": "Knabenschiessen", "2048-12-25": "Christmas Day", "2048-12-26": "Saint Stephen's Day", "2049-01-01": "New Year's Day", "2049-01-02": "Saint Berchtold's Day", "2049-04-16": "Good Friday", "2049-04-19": "Easter Monday", + "2049-04-26": "Sechsel\u00e4uten", "2049-05-01": "Labor Day", "2049-05-27": "Ascension Day", "2049-06-07": "Whit Monday", "2049-08-01": "National Day", + "2049-09-11": "Knabenschiessen", + "2049-09-12": "Knabenschiessen", + "2049-09-13": "Knabenschiessen", "2049-12-25": "Christmas Day", "2049-12-26": "Saint Stephen's Day", "2050-01-01": "New Year's Day", "2050-01-02": "Saint Berchtold's Day", "2050-04-08": "Good Friday", "2050-04-11": "Easter Monday", + "2050-04-18": "Sechsel\u00e4uten", "2050-05-01": "Labor Day", "2050-05-19": "Ascension Day", "2050-05-30": "Whit Monday", "2050-08-01": "National Day", + "2050-09-10": "Knabenschiessen", + "2050-09-11": "Knabenschiessen", + "2050-09-12": "Knabenschiessen", "2050-12-25": "Christmas Day", "2050-12-26": "Saint Stephen's Day" } diff --git a/tests/countries/test_switzerland.py b/tests/countries/test_switzerland.py index cbe8aac727..3ae3e1eed7 100644 --- a/tests/countries/test_switzerland.py +++ b/tests/countries/test_switzerland.py @@ -23,10 +23,14 @@ def setUpClass(cls): years = range(1970, 2050) super().setUpClass(Switzerland, years=years) cls.subdiv_holidays = { - subdiv: CH(subdiv=subdiv, years=years) for subdiv in CH.subdivisions + subdiv: Switzerland(subdiv=subdiv, years=years) for subdiv in CH.subdivisions } - cls.subdiv_holidays_optional = { - subdiv: CH(categories=OPTIONAL, subdiv=subdiv, years=years) + cls.subdiv_half_day_holidays = { + subdiv: Switzerland(categories=HALF_DAY, subdiv=subdiv, years=years) + for subdiv in CH.subdivisions + } + cls.subdiv_optional_holidays = { + subdiv: Switzerland(categories=OPTIONAL, subdiv=subdiv, years=years) for subdiv in CH.subdivisions } @@ -37,7 +41,7 @@ def test_all_holidays_present(self): y_2018 = set() for p in CH.subdivisions: y_2018.update( - CH(categories=(HALF_DAY, OPTIONAL, PUBLIC), years=2018, subdiv=p).values() + Switzerland(categories=(HALF_DAY, OPTIONAL, PUBLIC), years=2018, subdiv=p).values() ) all_h = { # Holidays names in their chronological order. "Neujahrstag", @@ -48,6 +52,7 @@ def test_all_holidays_present(self): "Näfelser Fahrt", "Karfreitag", "Ostermontag", + "Sechseläuten", "Tag der Arbeit", "Auffahrt", "Pfingstmontag", @@ -56,6 +61,7 @@ def test_all_holidays_present(self): "Peter und Paul", "Nationalfeiertag", "Mariä Himmelfahrt", + "Knabenschiessen", "Bettagsmontag", "Bruder Klaus", "Allerheiligen", @@ -96,7 +102,7 @@ def test_berchtolds_day(self): self.assertNoHoliday(holidays, (f"{year}-01-02" for year in range(1970, 2050))) self.assertNoHolidayName(name, holidays) - for subdiv, holidays in self.subdiv_holidays_optional.items(): + for subdiv, holidays in self.subdiv_optional_holidays.items(): if subdiv in subdivs_optional: self.assertHolidayName( name, holidays, (f"{year}-01-02" for year in range(1970, 2050)) @@ -191,7 +197,7 @@ def test_nafels_ride(self): self.assertNoHoliday(holidays, known_good) self.assertNoHolidayName(name, holidays) - self.assertNoHolidayName(name, CH(subdiv="GL", years=1834)) + self.assertNoHolidayName(name, Switzerland(subdiv="GL", years=1834)) def test_good_friday(self): name = "Karfreitag" @@ -228,7 +234,7 @@ def test_good_friday(self): self.assertNoHoliday(holidays, known_good) self.assertNoHolidayName(name, holidays) - for subdiv, holidays in self.subdiv_holidays_optional.items(): + for subdiv, holidays in self.subdiv_optional_holidays.items(): if subdiv in subdivs_optional: self.assertHolidayName(name, holidays, known_good) else: @@ -270,7 +276,7 @@ def test_easter_monday(self): self.assertNoHoliday(holidays, known_good) self.assertNoHolidayName(name, holidays) - for subdiv, holidays in self.subdiv_holidays_optional.items(): + for subdiv, holidays in self.subdiv_optional_holidays.items(): if subdiv in subdivs_optional: self.assertHolidayName(name, holidays, known_good) else: @@ -294,11 +300,16 @@ def test_labor_day(self): ) self.assertNoHolidayName(name, holidays) - self.assertHolidayName( - name, - CH(categories=HALF_DAY, subdiv="SO", years=range(1970, 2050)), - (f"{year}-05-01" for year in range(1970, 2050)), - ) + for subdiv, holidays in self.subdiv_half_day_holidays.items(): + if subdiv == "SO": + self.assertHolidayName( + name, holidays, (f"{year}-05-01" for year in range(1970, 2050)) + ) + else: + self.assertNoHolidayName( + name, holidays, (f"{year}-05-01" for year in range(1970, 2050)) + ) + self.assertNoHolidayName(name, holidays) def test_ascension_day(self): name = "Auffahrt" @@ -364,7 +375,7 @@ def test_whit_monday(self): self.assertNoHoliday(holidays, known_good) self.assertNoHolidayName(name, holidays) - for subdiv, holidays in self.subdiv_holidays_optional.items(): + for subdiv, holidays in self.subdiv_optional_holidays.items(): if subdiv in subdivs_optional: self.assertHolidayName(name, holidays, known_good) else: @@ -597,7 +608,7 @@ def test_saint_stephens_day(self): self.assertNoHoliday(holidays, (f"{year}-12-26" for year in range(1970, 2050))) self.assertNoHolidayName(name, holidays) - for subdiv, holidays in self.subdiv_holidays_optional.items(): + for subdiv, holidays in self.subdiv_optional_holidays.items(): if subdiv in subdivs_optional: self.assertHolidayName( name, holidays, (f"{year}-12-26" for year in range(1970, 2050)) @@ -667,6 +678,89 @@ def test_restoration_day(self): self.assertNoHoliday(holidays, (f"{year}-12-31" for year in range(1970, 2050))) self.assertNoHolidayName(name, holidays) + def test_knabenschiessen(self): + name = "Knabenschiessen" + + self.assertNoHolidayName(name) + + for subdiv, holidays in self.subdiv_holidays.items(): + if subdiv == "ZH": + self.assertHolidayName( + name, + holidays, + "2020-09-12", + "2020-09-13", + "2021-09-11", + "2021-09-12", + "2022-09-10", + "2022-09-11", + "2023-09-09", + "2023-09-10", + "2024-09-07", + "2024-09-08", + "2025-09-13", + "2025-09-14", + ) + self.assertHolidayNameCount(name, 2, holidays, range(1970, 2050)) + else: + self.assertNoHolidayName(name, holidays) + + for subdiv, holidays in self.subdiv_half_day_holidays.items(): + if subdiv == "ZH": + self.assertHolidayName( + name, + holidays, + "2020-09-14", + "2021-09-13", + "2022-09-12", + "2023-09-11", + "2024-09-09", + "2025-09-15", + ) + self.assertHolidayName(name, holidays, range(1970, 2050)) + else: + self.assertNoHolidayName(name, holidays) + + self.assertNoHolidayName(name, Switzerland(subdiv="ZH", years=1898)) + + def test_sechselauten(self): + name = "Sechseläuten" + + self.assertNoHolidayName(name) + + for subdiv, holidays in self.subdiv_half_day_holidays.items(): + if subdiv == "ZH": + self.assertHolidayName( + name, + holidays, + "2020-04-20", + "2021-04-19", + "2022-04-25", + "2023-04-17", + "2024-04-15", + "2025-04-28", + ) + self.assertHolidayName(name, holidays, range(1970, 2050)) + else: + self.assertNoHolidayName(name, holidays) + + subdiv_zh_half_day_holidays = Switzerland( + categories=HALF_DAY, subdiv="ZH", years=range(1901, 1952) + ) + + self.assertHolidayName( + name, + subdiv_zh_half_day_holidays, + "1902-03-24", + "1903-03-23", + "1904-03-21", + "1949-03-21", + "1950-03-27", + "1951-03-26", + ) + self.assertHolidayName(name, subdiv_zh_half_day_holidays, range(1902, 1952)) + self.assertNoHolidayName(name, subdiv_zh_half_day_holidays, 1901) + def test_l10n_default(self): self.assertLocalizedHolidays( ("2023-01-01", "Neujahrstag"), @@ -677,6 +771,7 @@ def test_l10n_default(self): ("2023-04-07", "Karfreitag"), ("2023-04-10", "Ostermontag"), ("2023-04-13", "Näfelser Fahrt"), + ("2023-04-17", "Sechseläuten"), ("2023-05-01", "Tag der Arbeit"), ("2023-05-18", "Auffahrt"), ("2023-05-29", "Pfingstmontag"), @@ -686,6 +781,9 @@ def test_l10n_default(self): ("2023-08-01", "Nationalfeiertag"), ("2023-08-15", "Mariä Himmelfahrt"), ("2023-09-07", "Genfer Bettag"), + ("2023-09-09", "Knabenschiessen"), + ("2023-09-10", "Knabenschiessen"), + ("2023-09-11", "Knabenschiessen"), ("2023-09-18", "Bettagsmontag"), ("2023-09-25", "Bruder Klaus"), ("2023-11-01", "Allerheiligen"), @@ -706,6 +804,7 @@ def test_l10n_en_us(self): ("2023-04-07", "Good Friday"), ("2023-04-10", "Easter Monday"), ("2023-04-13", "Battle of Naefels Victory Day"), + ("2023-04-17", "Sechseläuten"), ("2023-05-01", "Labor Day"), ("2023-05-18", "Ascension Day"), ("2023-05-29", "Whit Monday"), @@ -715,6 +814,9 @@ def test_l10n_en_us(self): ("2023-08-01", "National Day"), ("2023-08-15", "Assumption Day"), ("2023-09-07", "Genevan Fast"), + ("2023-09-09", "Knabenschiessen"), + ("2023-09-10", "Knabenschiessen"), + ("2023-09-11", "Knabenschiessen"), ("2023-09-18", "Prayer Monday"), ("2023-09-25", "Saint Nicholas of Flüe"), ("2023-11-01", "All Saints' Day"), @@ -735,6 +837,7 @@ def test_l10n_fr(self): ("2023-04-07", "Vendredi saint"), ("2023-04-10", "Lundi de Pâques"), ("2023-04-13", "Fahrtsfest"), + ("2023-04-17", "Sechseläuten"), ("2023-05-01", "Fête du Travail"), ("2023-05-18", "Ascension"), ("2023-05-29", "Lundi de Pentecôte"), @@ -744,6 +847,9 @@ def test_l10n_fr(self): ("2023-08-01", "Fête nationale"), ("2023-08-15", "Assomption"), ("2023-09-07", "Jeûne genevois"), + ("2023-09-09", "Knabenschiessen"), + ("2023-09-10", "Knabenschiessen"), + ("2023-09-11", "Knabenschiessen"), ("2023-09-18", "Lundi du Jeûne fédéral"), ("2023-09-25", "Fête de Saint-Nicolas-de-Flüe"), ("2023-11-01", "Toussaint"), @@ -764,6 +870,7 @@ def test_l10n_it(self): ("2023-04-07", "Venerdì Santo"), ("2023-04-10", "Lunedì dell'Angelo"), ("2023-04-13", "Battaglia di Näfels"), + ("2023-04-17", "Sechseläuten"), ("2023-05-01", "Festa del lavoro"), ("2023-05-18", "Ascensione di Gesù"), ("2023-05-29", "Lunedì di Pentecoste"), @@ -773,6 +880,9 @@ def test_l10n_it(self): ("2023-08-01", "Festa nazionale"), ("2023-08-15", "Assunzione di Maria"), ("2023-09-07", "Jeûne genevois"), + ("2023-09-09", "Knabenschiessen"), + ("2023-09-10", "Knabenschiessen"), + ("2023-09-11", "Knabenschiessen"), ("2023-09-18", "Digiuno Ginevrino"), ("2023-09-25", "Nicolao della Flüe"), ("2023-11-01", "Ognissanti"), @@ -782,6 +892,39 @@ def test_l10n_it(self): ("2023-12-31", "Restauration genevoise"), ) + def test_l10n_th(self): + self.assertLocalizedHolidays( + "th", + ("2023-01-01", "วันขึ้นปีใหม่"), + ("2023-01-02", "วันสมโภชนักบุญแบร์กโทลด์"), + ("2023-01-06", "วันสมโภชพระคริสต์แสดงองค์"), + ("2023-03-01", "วันครบรอบการสถาปนาสาธารณรัฐนอยชาแตล"), + ("2023-03-19", "วันสมโภชนักบุญโยเซฟ"), + ("2023-04-07", "วันศุกร์ประเสริฐ"), + ("2023-04-10", "วันจันทร์อีสเตอร์"), + ("2023-04-13", "วันรำลึกชัยชนะยุทธการเนเฟลส์"), + ("2023-04-17", "เซ็กเซ่ะเล๊าเท่น"), + ("2023-05-01", "วันแรงงาน"), + ("2023-05-18", "วันสมโภชพระเยซูเจ้าเสด็จขึ้นสวรรค์"), + ("2023-05-29", "วันจันทร์หลังวันสมโภชพระจิตเจ้า"), + ("2023-06-08", "วันสมโภชพระคริสตวรกาย"), + ("2023-06-23", "วันประกาศเอกราชจูรา"), + ("2023-06-29", "วันสมโภชนักบุญเปโตรและเปาโล"), + ("2023-08-01", "วันชาติสวิตเซอร์แลนด์"), + ("2023-08-15", "วันสมโภชแม่พระรับเกียรติยกขึ้นสวรรค์"), + ("2023-09-07", "วันถือศีลอดเจนีวา"), + ("2023-09-09", "คนาเบนชิสเซน"), + ("2023-09-10", "คนาเบนชิสเซน"), + ("2023-09-11", "คนาเบนชิสเซน"), + ("2023-09-18", "วันจันทร์แห่งการอธิษฐาน"), + ("2023-09-25", "วันสมโภชนักบุญนิโคลัสแห่งฟลือเออ"), + ("2023-11-01", "วันสมโภชนักบุญทั้งหลาย"), + ("2023-12-08", "วันสมโภชแม่พระผู้ปฏิสนธินิรมล"), + ("2023-12-25", "วันคริสต์มาส"), + ("2023-12-26", "วันสมโภชนักบุญสเตเฟน"), + ("2023-12-31", "วันกอบกู้เอกราชสาธารณรัฐเจนีวา"), + ) + def test_l10n_uk(self): self.assertLocalizedHolidays( "uk", @@ -793,6 +936,7 @@ def test_l10n_uk(self): ("2023-04-07", "Страсна пʼятниця"), ("2023-04-10", "Великодній понеділок"), ("2023-04-13", "Свято перемоги під Нефельсом"), + ("2023-04-17", "Зексельйотен"), ("2023-05-01", "День праці"), ("2023-05-18", "Вознесіння Господнє"), ("2023-05-29", "День Святого Духа"), @@ -802,6 +946,9 @@ def test_l10n_uk(self): ("2023-08-01", "Національне свято"), ("2023-08-15", "Внебовзяття Пресвятої Діви Марії"), ("2023-09-07", "Женевський піст"), + ("2023-09-09", "Кнабеншісен"), + ("2023-09-10", "Кнабеншісен"), + ("2023-09-11", "Кнабеншісен"), ("2023-09-18", "Молитовний понеділок"), ("2023-09-25", "День Святого Ніклауса з Флюе"), ("2023-11-01", "День усіх святих"), diff --git a/tests/test_utils.py b/tests/test_utils.py index 2b20cc098b..fde41d4ec6 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -12,6 +12,7 @@ import unittest import warnings +from collections import defaultdict from datetime import date from pathlib import Path from unittest import mock @@ -39,33 +40,33 @@ def test_country(self): self.assertEqual(self.holidays.country, "US") def test_country_single_year(self): - h = country_holidays("US", years=2021) - self.assertEqual(h.years, {2021}) + test_holidays = country_holidays("US", years=2021) + self.assertEqual(test_holidays.years, {2021}) - def test_country_years(self): - h = country_holidays("US", years=(2015, 2016)) - self.assertEqual(h.years, {2015, 2016}) + def test_country_multiple_years(self): + test_holidays = country_holidays("US", years=(2015, 2021)) + self.assertEqual(test_holidays.years, {2015, 2021}) - def test_country_state(self): - h = country_holidays("US", subdiv="NY") - self.assertEqual(h.subdiv, "NY") + def test_country_range_years(self): + test_holidays = country_holidays("US", years=range(2010, 2015)) + self.assertEqual(test_holidays.years, set(range(2010, 2015))) - def test_country_province(self): - h = country_holidays("AU", subdiv="NT") - self.assertEqual(h.subdiv, "NT") + def test_country_subdivision(self): + test_holidays = country_holidays("US", subdiv="NY") + self.assertEqual(test_holidays.subdiv, "NY") - def test_exceptions(self): - self.assertRaises(NotImplementedError, lambda: country_holidays("XXXX")) - self.assertRaises(NotImplementedError, lambda: country_holidays("US", subdiv="XXXX")) - self.assertRaises(NotImplementedError, lambda: country_holidays("US", subdiv="XXXX")) + def test_invalid_country_raises_not_implemented(self): + with self.assertRaises(NotImplementedError): + country_holidays("XXXX") + + def test_invalid_country_subdivision_raises_not_implemented(self): + with self.assertRaises(NotImplementedError): + country_holidays("US", subdiv="XXXX") def test_country_holiday_class_deprecation(self): - with warnings.catch_warnings(record=True) as ctx: - warnings.simplefilter("always") + with self.assertWarns(DeprecationWarning) as ctx: CountryHoliday("IT") - warning = ctx[0] - self.assertTrue(issubclass(warning.category, DeprecationWarning)) - self.assertIn("CountryHoliday is deprecated", str(warning.message)) + self.assertIn("CountryHoliday is deprecated", str(ctx.warning)) class TestFinancialHolidays(unittest.TestCase): @@ -76,29 +77,32 @@ def test_market(self): self.assertEqual(self.holidays.market, "XNYS") def test_market_single_year(self): - h = financial_holidays("XNYS", years=2021) - self.assertEqual(h.years, {2021}) + test_holidays = financial_holidays("XNYS", years=2021) + self.assertEqual(test_holidays.years, {2021}) + + def test_market_multiple_years(self): + test_holidays = financial_holidays("XNYS", years=(2015, 2021)) + self.assertEqual(test_holidays.years, {2015, 2021}) + + def test_market_range_years(self): + test_holidays = financial_holidays("XNYS", years=range(2010, 2015)) + self.assertEqual(test_holidays.years, set(range(2010, 2015))) - def test_market_years(self): - h = financial_holidays("XNYS", years=(2015, 2016)) - self.assertEqual(h.years, {2015, 2016}) + def test_invalid_market_raises_not_implemented(self): + with self.assertRaises(NotImplementedError): + financial_holidays("XXXX") - def test_exceptions(self): - self.assertRaises(NotImplementedError, lambda: financial_holidays("XXXX")) - self.assertRaises(NotImplementedError, lambda: financial_holidays("XNYS", subdiv="XXXX")) + def test_invalid_market_subdivision_raises_not_implemented(self): + with self.assertRaises(NotImplementedError): + financial_holidays("XNYS", subdiv="XXXX") class TestAllInSameYear(unittest.TestCase): - """Test that only holidays in the year(s) requested are returned.""" + """Ensure only holidays in the year(s) requested are returned.""" years = set(range(1950, 2051)) - @pytest.mark.skipif( - PYTHON_VERSION != PYTHON_LATEST_SUPPORTED_VERSION, - reason="Run once on the latest Python version only", - ) - @mock.patch("pathlib.Path.rglob", return_value=()) - def test_all_countries(self, unused_rglob_mock): + def _check_holidays_years(self, entity_func, entity_list): """ Only holidays in the year(s) requested should be returned. This ensures that we avoid triggering a "RuntimeError: dictionary changed @@ -108,36 +112,33 @@ def test_all_countries(self, unused_rglob_mock): we only run it once on the latest Python version. """ warnings.simplefilter("ignore") - - for country in list_supported_countries(): - for year in self.years: - for dt in country_holidays(country, years=year): - self.assertEqual(dt.year, year) - self.assertEqual(type(dt), date) - self.assertEqual(self.years, country_holidays(country, years=self.years).years) + for entity in entity_list: + with self.subTest(entity=entity): + # Check each year individually + for year in self.years: + for dt in entity_func(entity, years=year): + self.assertEqual(dt.year, year) + self.assertIsInstance(dt, date) + + # Check full range at once + all_holidays = entity_func(entity, years=self.years) + self.assertEqual(all_holidays.years, self.years) @pytest.mark.skipif( PYTHON_VERSION != PYTHON_LATEST_SUPPORTED_VERSION, reason="Run once on the latest Python version only", ) @mock.patch("pathlib.Path.rglob", return_value=()) - def test_all_financial(self, unused_rglob_mock): - """ - Only holidays in the year(s) requested should be returned. This - ensures that we avoid triggering a "RuntimeError: dictionary changed - size during iteration" error. - - This is logic test and not a code compatibility test, so for expediency - we only run it once on the latest Python version. - """ - warnings.simplefilter("ignore") + def test_all_countries(self, _unused_mock): + self._check_holidays_years(country_holidays, list_supported_countries()) - for market in list_supported_financial(): - for year in self.years: - for dt in financial_holidays(market, years=year): - self.assertEqual(dt.year, year) - self.assertEqual(type(dt), date) - self.assertEqual(self.years, financial_holidays(market, years=self.years).years) + @pytest.mark.skipif( + PYTHON_VERSION != PYTHON_LATEST_SUPPORTED_VERSION, + reason="Run once on the latest Python version only", + ) + @mock.patch("pathlib.Path.rglob", return_value=()) + def test_all_financial(self, _unused_mock): + self._check_holidays_years(financial_holidays, list_supported_financial()) class TestListLocalizedEntities(unittest.TestCase): @@ -145,40 +146,32 @@ def assertLocalizedEntities(self, localized_entities, supported_entities): # no tests_dir = Path(__file__).parent locale_dir = tests_dir.parent / "holidays" / "locale" + # Collect `` part from + # holidays/locale//LC_MESSAGES/.mo. + entity_to_languages = defaultdict(list) + for path in locale_dir.rglob("*.mo"): + entity_to_languages[path.stem].append(path.parts[-3]) + for entity_code in supported_entities.keys(): - actual_languages = sorted( - # Collect `` part from - # holidays/locale//LC_MESSAGES/.mo. - path.parts[-3] - for path in Path(locale_dir).rglob(f"{entity_code}.mo") - ) + actual_languages = sorted(entity_to_languages.get(entity_code, [])) expected_languages = localized_entities.get(entity_code, []) self.assertEqual( actual_languages, expected_languages, - f"The supported languages for {entity_code} don't match " - f"its actual languages: " + f"The supported languages for {entity_code} don't match its actual languages: " f"{set(actual_languages).difference(set(expected_languages))}", ) entity = getattr(holidays, entity_code) - self.assertEqual( list(entity.supported_languages), expected_languages, f"The supported languages for {entity_code} don't match " "its `supported_languages`.", ) - self.assertEqual( - actual_languages, - expected_languages, - f"Actual and expected locales differ for {entity_code}: " - f"{set(actual_languages).difference(set(expected_languages))}", - ) if expected_languages: - self.assertIsInstance(expected_languages, list, entity_code) self.assertIn( entity.default_language, expected_languages, @@ -201,30 +194,28 @@ class TestListSupportedEntities(unittest.TestCase): def test_list_supported_countries(self): supported_countries = list_supported_countries(include_aliases=False) - self.assertIn("AR", supported_countries) - self.assertIn("CA", supported_countries["US"]) - self.assertIn("IM", supported_countries) - self.assertIn("ZA", supported_countries) + for country in ("AR", "IM", "ZA"): + self.assertIn(country, supported_countries) us_subdivisions = supported_countries["US"] self.assertIn("CA", us_subdivisions) self.assertIsInstance(us_subdivisions, list) - countries_files = [ - path for path in Path("holidays/countries").glob("*.py") if path.stem != "__init__" - ] - self.assertEqual(len(countries_files), len(supported_countries)) + countries_count = sum( + 1 for path in Path("holidays/countries").glob("*.py") if path.stem != "__init__" + ) + self.assertEqual(countries_count, len(supported_countries)) def test_list_supported_financial(self): supported_financial = list_supported_financial(include_aliases=False) - for code in ("BVMF", "IFEU", "XECB", "XNYS"): - self.assertIn(code, supported_financial) + for market in ("BVMF", "IFEU", "XECB", "XNYS"): + self.assertIn(market, supported_financial) - xnys = supported_financial["XNYS"] - self.assertIsInstance(xnys, list) + xnys_subdivisions = supported_financial.get("XNYS", []) + self.assertIsInstance(xnys_subdivisions, list) - financial_files = [ - path for path in Path("holidays/financial").glob("*.py") if path.stem != "__init__" - ] - self.assertEqual(len(financial_files), len(supported_financial)) + financial_count = sum( + 1 for path in Path("holidays/financial").glob("*.py") if path.stem != "__init__" + ) + self.assertEqual(financial_count, len(supported_financial)) From 83a1c8b7746a0b92ca93d1c34dfdb9f33fb508fd Mon Sep 17 00:00:00 2001 From: PPsyrius <19505219+PPsyrius@users.noreply.github.com> Date: Sat, 4 Oct 2025 12:17:48 +0700 Subject: [PATCH 2/8] =?UTF-8?q?Remove=20unrelated=20changes,=20fill=20in?= =?UTF-8?q?=20Sechsel=C3=A4uten's=20test=20year=20gaps?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/countries/test_switzerland.py | 5 +- tests/test_utils.py | 171 +++++++++++++++------------- 2 files changed, 93 insertions(+), 83 deletions(-) diff --git a/tests/countries/test_switzerland.py b/tests/countries/test_switzerland.py index 3ae3e1eed7..3c961ed7e8 100644 --- a/tests/countries/test_switzerland.py +++ b/tests/countries/test_switzerland.py @@ -745,7 +745,7 @@ def test_sechselauten(self): self.assertNoHolidayName(name, holidays) subdiv_zh_half_day_holidays = Switzerland( - categories=HALF_DAY, subdiv="ZH", years=range(1901, 1952) + categories=HALF_DAY, subdiv="ZH", years=range(1901, 1970) ) self.assertHolidayName( @@ -757,8 +757,9 @@ def test_sechselauten(self): "1949-03-21", "1950-03-27", "1951-03-26", + "1952-04-21", ) - self.assertHolidayName(name, subdiv_zh_half_day_holidays, range(1902, 1952)) + self.assertHolidayName(name, subdiv_zh_half_day_holidays, range(1902, 1970)) self.assertNoHolidayName(name, subdiv_zh_half_day_holidays, 1901) def test_l10n_default(self): diff --git a/tests/test_utils.py b/tests/test_utils.py index fde41d4ec6..b01adda0a8 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -12,7 +12,6 @@ import unittest import warnings -from collections import defaultdict from datetime import date from pathlib import Path from unittest import mock @@ -40,33 +39,33 @@ def test_country(self): self.assertEqual(self.holidays.country, "US") def test_country_single_year(self): - test_holidays = country_holidays("US", years=2021) - self.assertEqual(test_holidays.years, {2021}) + h = country_holidays("US", years=2021) + self.assertEqual(h.years, {2021}) - def test_country_multiple_years(self): - test_holidays = country_holidays("US", years=(2015, 2021)) - self.assertEqual(test_holidays.years, {2015, 2021}) + def test_country_years(self): + h = country_holidays("US", years=(2015, 2016)) + self.assertEqual(h.years, {2015, 2016}) - def test_country_range_years(self): - test_holidays = country_holidays("US", years=range(2010, 2015)) - self.assertEqual(test_holidays.years, set(range(2010, 2015))) + def test_country_state(self): + h = country_holidays("US", subdiv="NY") + self.assertEqual(h.subdiv, "NY") - def test_country_subdivision(self): - test_holidays = country_holidays("US", subdiv="NY") - self.assertEqual(test_holidays.subdiv, "NY") + def test_country_province(self): + h = country_holidays("AU", subdiv="NT") + self.assertEqual(h.subdiv, "NT") - def test_invalid_country_raises_not_implemented(self): - with self.assertRaises(NotImplementedError): - country_holidays("XXXX") - - def test_invalid_country_subdivision_raises_not_implemented(self): - with self.assertRaises(NotImplementedError): - country_holidays("US", subdiv="XXXX") + def test_exceptions(self): + self.assertRaises(NotImplementedError, lambda: country_holidays("XXXX")) + self.assertRaises(NotImplementedError, lambda: country_holidays("US", subdiv="XXXX")) + self.assertRaises(NotImplementedError, lambda: country_holidays("US", subdiv="XXXX")) def test_country_holiday_class_deprecation(self): - with self.assertWarns(DeprecationWarning) as ctx: + with warnings.catch_warnings(record=True) as ctx: + warnings.simplefilter("always") CountryHoliday("IT") - self.assertIn("CountryHoliday is deprecated", str(ctx.warning)) + warning = ctx[0] + self.assertTrue(issubclass(warning.category, DeprecationWarning)) + self.assertIn("CountryHoliday is deprecated", str(warning.message)) class TestFinancialHolidays(unittest.TestCase): @@ -77,32 +76,29 @@ def test_market(self): self.assertEqual(self.holidays.market, "XNYS") def test_market_single_year(self): - test_holidays = financial_holidays("XNYS", years=2021) - self.assertEqual(test_holidays.years, {2021}) - - def test_market_multiple_years(self): - test_holidays = financial_holidays("XNYS", years=(2015, 2021)) - self.assertEqual(test_holidays.years, {2015, 2021}) - - def test_market_range_years(self): - test_holidays = financial_holidays("XNYS", years=range(2010, 2015)) - self.assertEqual(test_holidays.years, set(range(2010, 2015))) + h = financial_holidays("XNYS", years=2021) + self.assertEqual(h.years, {2021}) - def test_invalid_market_raises_not_implemented(self): - with self.assertRaises(NotImplementedError): - financial_holidays("XXXX") + def test_market_years(self): + h = financial_holidays("XNYS", years=(2015, 2016)) + self.assertEqual(h.years, {2015, 2016}) - def test_invalid_market_subdivision_raises_not_implemented(self): - with self.assertRaises(NotImplementedError): - financial_holidays("XNYS", subdiv="XXXX") + def test_exceptions(self): + self.assertRaises(NotImplementedError, lambda: financial_holidays("XXXX")) + self.assertRaises(NotImplementedError, lambda: financial_holidays("XNYS", subdiv="XXXX")) class TestAllInSameYear(unittest.TestCase): - """Ensure only holidays in the year(s) requested are returned.""" + """Test that only holidays in the year(s) requested are returned.""" years = set(range(1950, 2051)) - def _check_holidays_years(self, entity_func, entity_list): + @pytest.mark.skipif( + PYTHON_VERSION != PYTHON_LATEST_SUPPORTED_VERSION, + reason="Run once on the latest Python version only", + ) + @mock.patch("pathlib.Path.rglob", return_value=()) + def test_all_countries(self, unused_rglob_mock): """ Only holidays in the year(s) requested should be returned. This ensures that we avoid triggering a "RuntimeError: dictionary changed @@ -112,33 +108,36 @@ def _check_holidays_years(self, entity_func, entity_list): we only run it once on the latest Python version. """ warnings.simplefilter("ignore") - for entity in entity_list: - with self.subTest(entity=entity): - # Check each year individually - for year in self.years: - for dt in entity_func(entity, years=year): - self.assertEqual(dt.year, year) - self.assertIsInstance(dt, date) - - # Check full range at once - all_holidays = entity_func(entity, years=self.years) - self.assertEqual(all_holidays.years, self.years) - @pytest.mark.skipif( - PYTHON_VERSION != PYTHON_LATEST_SUPPORTED_VERSION, - reason="Run once on the latest Python version only", - ) - @mock.patch("pathlib.Path.rglob", return_value=()) - def test_all_countries(self, _unused_mock): - self._check_holidays_years(country_holidays, list_supported_countries()) + for country in list_supported_countries(): + for year in self.years: + for dt in country_holidays(country, years=year): + self.assertEqual(dt.year, year) + self.assertEqual(type(dt), date) + self.assertEqual(self.years, country_holidays(country, years=self.years).years) @pytest.mark.skipif( PYTHON_VERSION != PYTHON_LATEST_SUPPORTED_VERSION, reason="Run once on the latest Python version only", ) @mock.patch("pathlib.Path.rglob", return_value=()) - def test_all_financial(self, _unused_mock): - self._check_holidays_years(financial_holidays, list_supported_financial()) + def test_all_financial(self, unused_rglob_mock): + """ + Only holidays in the year(s) requested should be returned. This + ensures that we avoid triggering a "RuntimeError: dictionary changed + size during iteration" error. + + This is logic test and not a code compatibility test, so for expediency + we only run it once on the latest Python version. + """ + warnings.simplefilter("ignore") + + for market in list_supported_financial(): + for year in self.years: + for dt in financial_holidays(market, years=year): + self.assertEqual(dt.year, year) + self.assertEqual(type(dt), date) + self.assertEqual(self.years, financial_holidays(market, years=self.years).years) class TestListLocalizedEntities(unittest.TestCase): @@ -146,32 +145,40 @@ def assertLocalizedEntities(self, localized_entities, supported_entities): # no tests_dir = Path(__file__).parent locale_dir = tests_dir.parent / "holidays" / "locale" - # Collect `` part from - # holidays/locale//LC_MESSAGES/.mo. - entity_to_languages = defaultdict(list) - for path in locale_dir.rglob("*.mo"): - entity_to_languages[path.stem].append(path.parts[-3]) - for entity_code in supported_entities.keys(): - actual_languages = sorted(entity_to_languages.get(entity_code, [])) + actual_languages = sorted( + # Collect `` part from + # holidays/locale//LC_MESSAGES/.mo. + path.parts[-3] + for path in Path(locale_dir).rglob(f"{entity_code}.mo") + ) expected_languages = localized_entities.get(entity_code, []) self.assertEqual( actual_languages, expected_languages, - f"The supported languages for {entity_code} don't match its actual languages: " + f"The supported languages for {entity_code} don't match " + f"its actual languages: " f"{set(actual_languages).difference(set(expected_languages))}", ) entity = getattr(holidays, entity_code) + self.assertEqual( list(entity.supported_languages), expected_languages, f"The supported languages for {entity_code} don't match " "its `supported_languages`.", ) + self.assertEqual( + actual_languages, + expected_languages, + f"Actual and expected locales differ for {entity_code}: " + f"{set(actual_languages).difference(set(expected_languages))}", + ) if expected_languages: + self.assertIsInstance(expected_languages, list, entity_code) self.assertIn( entity.default_language, expected_languages, @@ -194,28 +201,30 @@ class TestListSupportedEntities(unittest.TestCase): def test_list_supported_countries(self): supported_countries = list_supported_countries(include_aliases=False) - for country in ("AR", "IM", "ZA"): - self.assertIn(country, supported_countries) + self.assertIn("AR", supported_countries) + self.assertIn("CA", supported_countries["US"]) + self.assertIn("IM", supported_countries) + self.assertIn("ZA", supported_countries) us_subdivisions = supported_countries["US"] self.assertIn("CA", us_subdivisions) self.assertIsInstance(us_subdivisions, list) - countries_count = sum( - 1 for path in Path("holidays/countries").glob("*.py") if path.stem != "__init__" - ) - self.assertEqual(countries_count, len(supported_countries)) + countries_files = [ + path for path in Path("holidays/countries").glob("*.py") if path.stem != "__init__" + ] + self.assertEqual(len(countries_files), len(supported_countries)) def test_list_supported_financial(self): supported_financial = list_supported_financial(include_aliases=False) - for market in ("BVMF", "IFEU", "XECB", "XNYS"): - self.assertIn(market, supported_financial) + for code in ("BVMF", "IFEU", "XECB", "XNYS"): + self.assertIn(code, supported_financial) - xnys_subdivisions = supported_financial.get("XNYS", []) - self.assertIsInstance(xnys_subdivisions, list) + xnys = supported_financial["XNYS"] + self.assertIsInstance(xnys, list) - financial_count = sum( - 1 for path in Path("holidays/financial").glob("*.py") if path.stem != "__init__" - ) - self.assertEqual(financial_count, len(supported_financial)) + financial_files = [ + path for path in Path("holidays/financial").glob("*.py") if path.stem != "__init__" + ] + self.assertEqual(len(financial_files), len(supported_financial)) From 6d2a8b67c6615eec832cecd07c79c01a5101ea3a Mon Sep 17 00:00:00 2001 From: PPsyrius <19505219+PPsyrius@users.noreply.github.com> Date: Sat, 4 Oct 2025 13:11:01 +0700 Subject: [PATCH 3/8] Add 1898 no `HALF_DAY` check for Knabenschiessen --- tests/countries/test_switzerland.py | 1 + tests/test_utils.py | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/countries/test_switzerland.py b/tests/countries/test_switzerland.py index 3c961ed7e8..a8b6c8a007 100644 --- a/tests/countries/test_switzerland.py +++ b/tests/countries/test_switzerland.py @@ -722,6 +722,7 @@ def test_knabenschiessen(self): self.assertNoHolidayName(name, holidays) self.assertNoHolidayName(name, Switzerland(subdiv="ZH", years=1898)) + self.assertNoHolidayName(name, Switzerland(categories=HALF_DAY, subdiv="ZH", years=1898)) def test_sechselauten(self): name = "Sechseläuten" diff --git a/tests/test_utils.py b/tests/test_utils.py index b01adda0a8..2b20cc098b 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -114,7 +114,7 @@ def test_all_countries(self, unused_rglob_mock): for dt in country_holidays(country, years=year): self.assertEqual(dt.year, year) self.assertEqual(type(dt), date) - self.assertEqual(self.years, country_holidays(country, years=self.years).years) + self.assertEqual(self.years, country_holidays(country, years=self.years).years) @pytest.mark.skipif( PYTHON_VERSION != PYTHON_LATEST_SUPPORTED_VERSION, @@ -137,7 +137,7 @@ def test_all_financial(self, unused_rglob_mock): for dt in financial_holidays(market, years=year): self.assertEqual(dt.year, year) self.assertEqual(type(dt), date) - self.assertEqual(self.years, financial_holidays(market, years=self.years).years) + self.assertEqual(self.years, financial_holidays(market, years=self.years).years) class TestListLocalizedEntities(unittest.TestCase): From 0d9f6e72c89c18226630b3f5152f49d88ce79622 Mon Sep 17 00:00:00 2001 From: PPsyrius <19505219+PPsyrius@users.noreply.github.com> Date: Wed, 8 Oct 2025 13:20:03 +0700 Subject: [PATCH 4/8] Add Betriebsferientage (BFT) as `OPTIONAL` holidays, other `HALF_DAY` holidays --- holidays/countries/switzerland.py | 48 +- holidays/locale/de/LC_MESSAGES/CH.po | 29 +- holidays/locale/en_US/LC_MESSAGES/CH.po | 28 +- holidays/locale/fr/LC_MESSAGES/CH.po | 29 +- holidays/locale/it/LC_MESSAGES/CH.po | 37 +- holidays/locale/th/LC_MESSAGES/CH.po | 28 +- holidays/locale/uk/LC_MESSAGES/CH.po | 29 +- snapshots/countries/CH_ZH.json | 738 +++++++++++++++++++++++- tests/countries/test_switzerland.py | 342 +++++++++-- 9 files changed, 1226 insertions(+), 82 deletions(-) diff --git a/holidays/countries/switzerland.py b/holidays/countries/switzerland.py index 959d183929..c1f7bca57e 100644 --- a/holidays/countries/switzerland.py +++ b/holidays/countries/switzerland.py @@ -20,6 +20,7 @@ MON_ONLY, TUE_TO_NONE, SAT_TO_NONE, + SUN_TO_NONE, ALL_TO_NEXT_MON, ) @@ -30,6 +31,9 @@ class Switzerland(ObservedHolidayBase, ChristianHolidays, InternationalHolidays) References: * * + * + * + * * * * @@ -730,7 +734,11 @@ def _populate_subdiv_zh_public_holidays(self): # Saint Stephen's Day. self._add_christmas_day_two(tr("Stephanstag")) - def _populate_subdiv_zh_half_day_holidays(self): + def _populate_subdiv_zh_common_holidays(self): + """Populate list of holidays observed by both `HALF_DAY` and `OPTIONAL` categories.""" + # Day before Good Friday. + self._add_holy_thursday(tr("Vortag vor Karfreitag")) + if self._year >= 1902: # Sechseläuten. name = tr("Sechseläuten") @@ -748,10 +756,48 @@ def _populate_subdiv_zh_half_day_holidays(self): show_observed_label=False, ) + # Christmas Eve. + self._add_christmas_eve(tr("Heiligabend")) + + # New Year's Eve. + self._add_new_years_eve(tr("Vortag vor Neujahr")) + + def _populate_subdiv_zh_half_day_holidays(self): + self._populate_subdiv_zh_common_holidays() + if self._year >= 1899: # Knabenschiessen. self._add_holiday_1_day_past_2nd_sun_of_sep(tr("Knabenschiessen")) + # Day before Ascension Day. + self._add_holiday_38_days_past_easter(tr("Vortag vor Auffahrt")) + + def _populate_subdiv_zh_optional_holidays(self): + self._populate_subdiv_zh_common_holidays() + + # This is only granted if end-year bridge holidays <= 2. + if ( + self._is_tuesday(self._christmas_day) + or self._is_wednesday(self._christmas_day) + or self._is_thursday(self._christmas_day) + ): + # Bridge Holiday for Ascension Day. + self._add_holiday_40_days_past_easter(tr("Brückentag nach Auffahrt")) + + # This is only granted if end-year bridge holidays <= 3. + if self._year >= 1899 and not ( + self._is_saturday(self._christmas_day) or self._is_sunday(self._christmas_day) + ): + # Knabenschiessen. + self._add_holiday_1_day_past_2nd_sun_of_sep(tr("Knabenschiessen")) + + # Bridge Holiday. + name = tr("Brückentag") + self._add_observed(self._add_holiday_dec_27(name), rule=SAT_TO_NONE + SUN_TO_NONE) + self._add_observed(self._add_holiday_dec_28(name), rule=SAT_TO_NONE + SUN_TO_NONE) + self._add_observed(self._add_holiday_dec_29(name), rule=SAT_TO_NONE + SUN_TO_NONE) + self._add_observed(self._add_holiday_dec_30(name), rule=SAT_TO_NONE + SUN_TO_NONE) + @property def _vernal_equinox_date(self) -> tuple[int, int]: """Return the Vernal Equinox date for Zurich (1902–1951).""" diff --git a/holidays/locale/de/LC_MESSAGES/CH.po b/holidays/locale/de/LC_MESSAGES/CH.po index 16af391e77..e8c9cbcd79 100644 --- a/holidays/locale/de/LC_MESSAGES/CH.po +++ b/holidays/locale/de/LC_MESSAGES/CH.po @@ -11,11 +11,12 @@ # License: MIT (see LICENSE file) # # Switzerland holidays. +# msgid "" msgstr "" -"Project-Id-Version: Holidays 0.82\n" +"Project-Id-Version: Holidays 0.83\n" "POT-Creation-Date: 2023-04-10 15:41+0300\n" -"PO-Revision-Date: 2025-10-04 11:30+0700\n" +"PO-Revision-Date: 2025-10-08 13:09+0700\n" "Last-Translator: PPsyrius \n" "Language-Team: Holidays Localization Team\n" "Language: de\n" @@ -126,6 +127,30 @@ msgstr "" msgid "Knabenschiessen" msgstr "" +#. Day before Good Friday. +msgid "Vortag vor Karfreitag" +msgstr "" + #. Sechseläuten. msgid "Sechseläuten" msgstr "" + +#. Christmas Eve. +msgid "Heiligabend" +msgstr "" + +#. New Year's Eve. +msgid "Vortag vor Neujahr" +msgstr "" + +#. Day before Ascension Day. +msgid "Vortag vor Auffahrt" +msgstr "" + +#. Bridge Holiday for Ascension Day. +msgid "Brückentag nach Auffahrt" +msgstr "" + +#. Bridge Holiday. +msgid "Brückentag" +msgstr "" diff --git a/holidays/locale/en_US/LC_MESSAGES/CH.po b/holidays/locale/en_US/LC_MESSAGES/CH.po index b8cd1ef39b..7ed87ff50b 100644 --- a/holidays/locale/en_US/LC_MESSAGES/CH.po +++ b/holidays/locale/en_US/LC_MESSAGES/CH.po @@ -14,9 +14,9 @@ # msgid "" msgstr "" -"Project-Id-Version: Holidays 0.82\n" +"Project-Id-Version: Holidays 0.83\n" "POT-Creation-Date: 2023-04-10 15:41+0300\n" -"PO-Revision-Date: 2025-10-04 11:31+0700\n" +"PO-Revision-Date: 2025-10-08 13:09+0700\n" "Last-Translator: PPsyrius \n" "Language-Team: Holidays Localization Team\n" "Language: en_US\n" @@ -127,6 +127,30 @@ msgstr "Prayer Monday" msgid "Knabenschiessen" msgstr "Knabenschiessen" +#. Day before Good Friday. +msgid "Vortag vor Karfreitag" +msgstr "Day before Good Friday" + #. Sechseläuten. msgid "Sechseläuten" msgstr "Sechseläuten" + +#. Christmas Eve. +msgid "Heiligabend" +msgstr "Christmas Eve" + +#. New Year's Eve. +msgid "Vortag vor Neujahr" +msgstr "New Year's Eve" + +#. Day before Ascension Day. +msgid "Vortag vor Auffahrt" +msgstr "Day before Ascension Day" + +#. Bridge Holiday for Ascension Day. +msgid "Brückentag nach Auffahrt" +msgstr "Bridge Holiday for Ascension Day" + +#. Bridge Holiday. +msgid "Brückentag" +msgstr "Bridge Holiday" diff --git a/holidays/locale/fr/LC_MESSAGES/CH.po b/holidays/locale/fr/LC_MESSAGES/CH.po index 90606f33d1..d0bbef752b 100644 --- a/holidays/locale/fr/LC_MESSAGES/CH.po +++ b/holidays/locale/fr/LC_MESSAGES/CH.po @@ -11,11 +11,12 @@ # License: MIT (see LICENSE file) # # Switzerland holidays fr localization. +# msgid "" msgstr "" -"Project-Id-Version: Holidays 0.82\n" +"Project-Id-Version: Holidays 0.83\n" "POT-Creation-Date: 2023-04-10 15:41+0300\n" -"PO-Revision-Date: 2025-10-04 11:31+0700\n" +"PO-Revision-Date: 2025-10-08 13:09+0700\n" "Last-Translator: PPsyrius \n" "Language-Team: Holidays Localization Team\n" "Language: fr\n" @@ -126,6 +127,30 @@ msgstr "Lundi du Jeûne fédéral" msgid "Knabenschiessen" msgstr "Knabenschiessen" +#. Day before Good Friday. +msgid "Vortag vor Karfreitag" +msgstr "Veille du Vendredi saint" + #. Sechseläuten. msgid "Sechseläuten" msgstr "Sechseläuten" + +#. Christmas Eve. +msgid "Heiligabend" +msgstr "Veille de Noël" + +#. New Year's Eve. +msgid "Vortag vor Neujahr" +msgstr "Réveillon du Nouvel An" + +#. Day before Ascension Day. +msgid "Vortag vor Auffahrt" +msgstr "Veille de l'Ascension" + +#. Bridge Holiday for Ascension Day. +msgid "Brückentag nach Auffahrt" +msgstr "Jour pont après l'Ascension" + +#. Bridge Holiday. +msgid "Brückentag" +msgstr "Jour pont" diff --git a/holidays/locale/it/LC_MESSAGES/CH.po b/holidays/locale/it/LC_MESSAGES/CH.po index bdac4ce6a2..b0514eaf66 100644 --- a/holidays/locale/it/LC_MESSAGES/CH.po +++ b/holidays/locale/it/LC_MESSAGES/CH.po @@ -11,11 +11,12 @@ # License: MIT (see LICENSE file) # # Switzerland holidays it localization. +# msgid "" msgstr "" -"Project-Id-Version: Holidays 0.82\n" +"Project-Id-Version: Holidays 0.83\n" "POT-Creation-Date: 2023-04-10 15:41+0300\n" -"PO-Revision-Date: 2025-10-04 11:31+0700\n" +"PO-Revision-Date: 2025-10-08 13:09+0700\n" "Last-Translator: PPsyrius \n" "Language-Team: Holidays Localization Team\n" "Language: it\n" @@ -84,11 +85,11 @@ msgstr "Giorno di Santo Stefano" #. Genevan Fast. msgid "Genfer Bettag" -msgstr "Jeûne genevois" +msgstr "Digiuno ginevrino" #. Restoration Day. msgid "Wiederherstellung der Republik" -msgstr "Restauration genevoise" +msgstr "Restaurazione della Repubblica" #. Battle of Naefels Victory Day. msgid "Näfelser Fahrt" @@ -108,7 +109,7 @@ msgstr "San Giuseppe" #. Saint Nicholas of Flüe. msgid "Bruder Klaus" -msgstr "Nicolao della Flüe" +msgstr "San Nicolao della Flue" #. Epiphany. msgid "Heilige Drei Könige" @@ -120,12 +121,36 @@ msgstr "Santi Pietro e Paolo" #. Prayer Monday. msgid "Bettagsmontag" -msgstr "Digiuno Ginevrino" +msgstr "Lunedì del digiuno federal" #. Knabenschiessen. msgid "Knabenschiessen" msgstr "Knabenschiessen" +#. Day before Good Friday. +msgid "Vortag vor Karfreitag" +msgstr "Vigilia del Venerdì Santo" + #. Sechseläuten. msgid "Sechseläuten" msgstr "Sechseläuten" + +#. Christmas Eve. +msgid "Heiligabend" +msgstr "Vigilia di Natale" + +#. New Year's Eve. +msgid "Vortag vor Neujahr" +msgstr "Vigilia di Capodanno" + +#. Day before Ascension Day. +msgid "Vortag vor Auffahrt" +msgstr "Vigilia dell'Ascensione di Gesù" + +#. Bridge Holiday for Ascension Day. +msgid "Brückentag nach Auffahrt" +msgstr "Giorno ponte dopo l'Ascensione di Gesù" + +#. Bridge Holiday. +msgid "Brückentag" +msgstr "Giorno ponte" diff --git a/holidays/locale/th/LC_MESSAGES/CH.po b/holidays/locale/th/LC_MESSAGES/CH.po index 2bd5bf3673..bf916b092a 100644 --- a/holidays/locale/th/LC_MESSAGES/CH.po +++ b/holidays/locale/th/LC_MESSAGES/CH.po @@ -14,9 +14,9 @@ # msgid "" msgstr "" -"Project-Id-Version: Holidays 0.82\n" +"Project-Id-Version: Holidays 0.83\n" "POT-Creation-Date: 2025-10-02 15:36+0700\n" -"PO-Revision-Date: 2025-10-04 11:31+0700\n" +"PO-Revision-Date: 2025-10-08 13:09+0700\n" "Last-Translator: PPsyrius \n" "Language-Team: Holidays Localization Team\n" "Language: th\n" @@ -127,6 +127,30 @@ msgstr "วันจันทร์แห่งการอธิษฐาน" msgid "Knabenschiessen" msgstr "คนาเบนชิสเซน" +#. Day before Good Friday. +msgid "Vortag vor Karfreitag" +msgstr "วันก่อนวันศุกร์ประเสริฐ" + #. Sechseläuten. msgid "Sechseläuten" msgstr "เซ็กเซ่ะเล๊าเท่น" + +#. Christmas Eve. +msgid "Heiligabend" +msgstr "วันคริสต์มาสอีฟ" + +#. New Year's Eve. +msgid "Vortag vor Neujahr" +msgstr "วันสิ้นปี" + +#. Day before Ascension Day. +msgid "Vortag vor Auffahrt" +msgstr "วันก่อนวันสมโภชพระเยซูเจ้าเสด็จขึ้นสวรรค์" + +#. Bridge Holiday for Ascension Day. +msgid "Brückentag nach Auffahrt" +msgstr "วันหยุดเพิ่มเติมสำหรับวันสมโภชพระเยซูเจ้าเสด็จขึ้นสวรรค์" + +#. Bridge Holiday. +msgid "Brückentag" +msgstr "วันหยุดเพิ่มเติม" diff --git a/holidays/locale/uk/LC_MESSAGES/CH.po b/holidays/locale/uk/LC_MESSAGES/CH.po index 303164a29f..0d8241b026 100644 --- a/holidays/locale/uk/LC_MESSAGES/CH.po +++ b/holidays/locale/uk/LC_MESSAGES/CH.po @@ -11,11 +11,12 @@ # License: MIT (see LICENSE file) # # Switzerland holidays uk localization. +# msgid "" msgstr "" -"Project-Id-Version: Holidays 0.82\n" +"Project-Id-Version: Holidays 0.83\n" "POT-Creation-Date: 2023-04-10 15:41+0300\n" -"PO-Revision-Date: 2025-10-04 11:31+0700\n" +"PO-Revision-Date: 2025-10-08 13:09+0700\n" "Last-Translator: PPsyrius \n" "Language-Team: Holidays Localization Team\n" "Language: uk\n" @@ -126,6 +127,30 @@ msgstr "Молитовний понеділок" msgid "Knabenschiessen" msgstr "Кнабеншісен" +#. Day before Good Friday. +msgid "Vortag vor Karfreitag" +msgstr "Переддень Страсної п’ятниці" + #. Sechseläuten. msgid "Sechseläuten" msgstr "Зексельйотен" + +#. Christmas Eve. +msgid "Heiligabend" +msgstr "Святий вечір" + +#. New Year's Eve. +msgid "Vortag vor Neujahr" +msgstr "Переддень Нового року" + +#. Day before Ascension Day. +msgid "Vortag vor Auffahrt" +msgstr "Переддень Вознесіння Господнього" + +#. Bridge Holiday for Ascension Day. +msgid "Brückentag nach Auffahrt" +msgstr "День-понт після Вознесіння Господа" + +#. Bridge Holiday. +msgid "Brückentag" +msgstr "Проміжний вихідний" diff --git a/snapshots/countries/CH_ZH.json b/snapshots/countries/CH_ZH.json index 78a2656e31..301a907d19 100644 --- a/snapshots/countries/CH_ZH.json +++ b/snapshots/countries/CH_ZH.json @@ -2,1413 +2,2149 @@ "1950-01-01": "New Year's Day", "1950-01-02": "Saint Berchtold's Day", "1950-03-27": "Sechsel\u00e4uten", + "1950-04-06": "Day before Good Friday", "1950-04-07": "Good Friday", "1950-04-10": "Easter Monday", "1950-05-01": "Labor Day", + "1950-05-17": "Day before Ascension Day", "1950-05-18": "Ascension Day", "1950-05-29": "Whit Monday", "1950-08-01": "National Day", "1950-09-09": "Knabenschiessen", "1950-09-10": "Knabenschiessen", "1950-09-11": "Knabenschiessen", + "1950-12-24": "Christmas Eve", "1950-12-25": "Christmas Day", "1950-12-26": "Saint Stephen's Day", + "1950-12-27": "Bridge Holiday", + "1950-12-28": "Bridge Holiday", + "1950-12-29": "Bridge Holiday", + "1950-12-31": "New Year's Eve", "1951-01-01": "New Year's Day", "1951-01-02": "Saint Berchtold's Day", + "1951-03-22": "Day before Good Friday", "1951-03-23": "Good Friday", "1951-03-26": "Easter Monday; Sechsel\u00e4uten", "1951-05-01": "Labor Day", + "1951-05-02": "Day before Ascension Day", "1951-05-03": "Ascension Day", + "1951-05-04": "Bridge Holiday for Ascension Day", "1951-05-14": "Whit Monday", "1951-08-01": "National Day", "1951-09-08": "Knabenschiessen", "1951-09-09": "Knabenschiessen", "1951-09-10": "Knabenschiessen", + "1951-12-24": "Christmas Eve", "1951-12-25": "Christmas Day", "1951-12-26": "Saint Stephen's Day", + "1951-12-27": "Bridge Holiday", + "1951-12-28": "Bridge Holiday", + "1951-12-31": "New Year's Eve", "1952-01-01": "New Year's Day", "1952-01-02": "Saint Berchtold's Day", + "1952-04-10": "Day before Good Friday", "1952-04-11": "Good Friday", "1952-04-14": "Easter Monday", "1952-04-21": "Sechsel\u00e4uten", "1952-05-01": "Labor Day", + "1952-05-21": "Day before Ascension Day", "1952-05-22": "Ascension Day", + "1952-05-23": "Bridge Holiday for Ascension Day", "1952-06-02": "Whit Monday", "1952-08-01": "National Day", "1952-09-13": "Knabenschiessen", "1952-09-14": "Knabenschiessen", "1952-09-15": "Knabenschiessen", + "1952-12-24": "Christmas Eve", "1952-12-25": "Christmas Day", "1952-12-26": "Saint Stephen's Day", + "1952-12-29": "Bridge Holiday", + "1952-12-30": "Bridge Holiday", + "1952-12-31": "New Year's Eve", "1953-01-01": "New Year's Day", "1953-01-02": "Saint Berchtold's Day", + "1953-04-02": "Day before Good Friday", "1953-04-03": "Good Friday", "1953-04-06": "Easter Monday", "1953-04-20": "Sechsel\u00e4uten", "1953-05-01": "Labor Day", + "1953-05-13": "Day before Ascension Day", "1953-05-14": "Ascension Day", "1953-05-25": "Whit Monday", "1953-08-01": "National Day", "1953-09-12": "Knabenschiessen", "1953-09-13": "Knabenschiessen", "1953-09-14": "Knabenschiessen", + "1953-12-24": "Christmas Eve", "1953-12-25": "Christmas Day", "1953-12-26": "Saint Stephen's Day", + "1953-12-28": "Bridge Holiday", + "1953-12-29": "Bridge Holiday", + "1953-12-30": "Bridge Holiday", + "1953-12-31": "New Year's Eve", "1954-01-01": "New Year's Day", "1954-01-02": "Saint Berchtold's Day", + "1954-04-15": "Day before Good Friday", "1954-04-16": "Good Friday", "1954-04-19": "Easter Monday", "1954-04-26": "Sechsel\u00e4uten", "1954-05-01": "Labor Day", + "1954-05-26": "Day before Ascension Day", "1954-05-27": "Ascension Day", "1954-06-07": "Whit Monday", "1954-08-01": "National Day", "1954-09-11": "Knabenschiessen", "1954-09-12": "Knabenschiessen", "1954-09-13": "Knabenschiessen", + "1954-12-24": "Christmas Eve", "1954-12-25": "Christmas Day", "1954-12-26": "Saint Stephen's Day", + "1954-12-27": "Bridge Holiday", + "1954-12-28": "Bridge Holiday", + "1954-12-29": "Bridge Holiday", + "1954-12-30": "Bridge Holiday", + "1954-12-31": "New Year's Eve", "1955-01-01": "New Year's Day", "1955-01-02": "Saint Berchtold's Day", + "1955-04-07": "Day before Good Friday", "1955-04-08": "Good Friday", "1955-04-11": "Easter Monday", "1955-04-18": "Sechsel\u00e4uten", "1955-05-01": "Labor Day", + "1955-05-18": "Day before Ascension Day", "1955-05-19": "Ascension Day", "1955-05-30": "Whit Monday", "1955-08-01": "National Day", "1955-09-10": "Knabenschiessen", "1955-09-11": "Knabenschiessen", "1955-09-12": "Knabenschiessen", + "1955-12-24": "Christmas Eve", "1955-12-25": "Christmas Day", "1955-12-26": "Saint Stephen's Day", + "1955-12-27": "Bridge Holiday", + "1955-12-28": "Bridge Holiday", + "1955-12-29": "Bridge Holiday", + "1955-12-30": "Bridge Holiday", + "1955-12-31": "New Year's Eve", "1956-01-01": "New Year's Day", "1956-01-02": "Saint Berchtold's Day", + "1956-03-29": "Day before Good Friday", "1956-03-30": "Good Friday", "1956-04-02": "Easter Monday", "1956-04-16": "Sechsel\u00e4uten", "1956-05-01": "Labor Day", + "1956-05-09": "Day before Ascension Day", "1956-05-10": "Ascension Day", + "1956-05-11": "Bridge Holiday for Ascension Day", "1956-05-21": "Whit Monday", "1956-08-01": "National Day", "1956-09-08": "Knabenschiessen", "1956-09-09": "Knabenschiessen", "1956-09-10": "Knabenschiessen", + "1956-12-24": "Christmas Eve", "1956-12-25": "Christmas Day", "1956-12-26": "Saint Stephen's Day", + "1956-12-27": "Bridge Holiday", + "1956-12-28": "Bridge Holiday", + "1956-12-31": "New Year's Eve", "1957-01-01": "New Year's Day", "1957-01-02": "Saint Berchtold's Day", "1957-04-15": "Sechsel\u00e4uten", + "1957-04-18": "Day before Good Friday", "1957-04-19": "Good Friday", "1957-04-22": "Easter Monday", "1957-05-01": "Labor Day", + "1957-05-29": "Day before Ascension Day", "1957-05-30": "Ascension Day", + "1957-05-31": "Bridge Holiday for Ascension Day", "1957-06-10": "Whit Monday", "1957-08-01": "National Day", "1957-09-07": "Knabenschiessen", "1957-09-08": "Knabenschiessen", "1957-09-09": "Knabenschiessen", + "1957-12-24": "Christmas Eve", "1957-12-25": "Christmas Day", "1957-12-26": "Saint Stephen's Day", + "1957-12-27": "Bridge Holiday", + "1957-12-30": "Bridge Holiday", + "1957-12-31": "New Year's Eve", "1958-01-01": "New Year's Day", "1958-01-02": "Saint Berchtold's Day", + "1958-04-03": "Day before Good Friday", "1958-04-04": "Good Friday", "1958-04-07": "Easter Monday", "1958-04-21": "Sechsel\u00e4uten", "1958-05-01": "Labor Day", + "1958-05-14": "Day before Ascension Day", "1958-05-15": "Ascension Day", + "1958-05-16": "Bridge Holiday for Ascension Day", "1958-05-26": "Whit Monday", "1958-08-01": "National Day", "1958-09-13": "Knabenschiessen", "1958-09-14": "Knabenschiessen", "1958-09-15": "Knabenschiessen", + "1958-12-24": "Christmas Eve", "1958-12-25": "Christmas Day", "1958-12-26": "Saint Stephen's Day", + "1958-12-29": "Bridge Holiday", + "1958-12-30": "Bridge Holiday", + "1958-12-31": "New Year's Eve", "1959-01-01": "New Year's Day", "1959-01-02": "Saint Berchtold's Day", + "1959-03-26": "Day before Good Friday", "1959-03-27": "Good Friday", "1959-03-30": "Easter Monday", "1959-04-20": "Sechsel\u00e4uten", "1959-05-01": "Labor Day", + "1959-05-06": "Day before Ascension Day", "1959-05-07": "Ascension Day", "1959-05-18": "Whit Monday", "1959-08-01": "National Day", "1959-09-12": "Knabenschiessen", "1959-09-13": "Knabenschiessen", "1959-09-14": "Knabenschiessen", + "1959-12-24": "Christmas Eve", "1959-12-25": "Christmas Day", "1959-12-26": "Saint Stephen's Day", + "1959-12-28": "Bridge Holiday", + "1959-12-29": "Bridge Holiday", + "1959-12-30": "Bridge Holiday", + "1959-12-31": "New Year's Eve", "1960-01-01": "New Year's Day", "1960-01-02": "Saint Berchtold's Day", + "1960-04-14": "Day before Good Friday", "1960-04-15": "Good Friday", "1960-04-18": "Easter Monday", "1960-04-25": "Sechsel\u00e4uten", "1960-05-01": "Labor Day", + "1960-05-25": "Day before Ascension Day", "1960-05-26": "Ascension Day", "1960-06-06": "Whit Monday", "1960-08-01": "National Day", "1960-09-10": "Knabenschiessen", "1960-09-11": "Knabenschiessen", "1960-09-12": "Knabenschiessen", + "1960-12-24": "Christmas Eve", "1960-12-25": "Christmas Day", "1960-12-26": "Saint Stephen's Day", + "1960-12-27": "Bridge Holiday", + "1960-12-28": "Bridge Holiday", + "1960-12-29": "Bridge Holiday", + "1960-12-30": "Bridge Holiday", + "1960-12-31": "New Year's Eve", "1961-01-01": "New Year's Day", "1961-01-02": "Saint Berchtold's Day", + "1961-03-30": "Day before Good Friday", "1961-03-31": "Good Friday", "1961-04-03": "Easter Monday", "1961-04-17": "Sechsel\u00e4uten", "1961-05-01": "Labor Day", + "1961-05-10": "Day before Ascension Day", "1961-05-11": "Ascension Day", "1961-05-22": "Whit Monday", "1961-08-01": "National Day", "1961-09-09": "Knabenschiessen", "1961-09-10": "Knabenschiessen", "1961-09-11": "Knabenschiessen", + "1961-12-24": "Christmas Eve", "1961-12-25": "Christmas Day", "1961-12-26": "Saint Stephen's Day", + "1961-12-27": "Bridge Holiday", + "1961-12-28": "Bridge Holiday", + "1961-12-29": "Bridge Holiday", + "1961-12-31": "New Year's Eve", "1962-01-01": "New Year's Day", "1962-01-02": "Saint Berchtold's Day", "1962-04-16": "Sechsel\u00e4uten", + "1962-04-19": "Day before Good Friday", "1962-04-20": "Good Friday", "1962-04-23": "Easter Monday", "1962-05-01": "Labor Day", + "1962-05-30": "Day before Ascension Day", "1962-05-31": "Ascension Day", + "1962-06-01": "Bridge Holiday for Ascension Day", "1962-06-11": "Whit Monday", "1962-08-01": "National Day", "1962-09-08": "Knabenschiessen", "1962-09-09": "Knabenschiessen", "1962-09-10": "Knabenschiessen", + "1962-12-24": "Christmas Eve", "1962-12-25": "Christmas Day", "1962-12-26": "Saint Stephen's Day", + "1962-12-27": "Bridge Holiday", + "1962-12-28": "Bridge Holiday", + "1962-12-31": "New Year's Eve", "1963-01-01": "New Year's Day", "1963-01-02": "Saint Berchtold's Day", + "1963-04-11": "Day before Good Friday", "1963-04-12": "Good Friday", "1963-04-15": "Easter Monday", "1963-04-22": "Sechsel\u00e4uten", "1963-05-01": "Labor Day", + "1963-05-22": "Day before Ascension Day", "1963-05-23": "Ascension Day", + "1963-05-24": "Bridge Holiday for Ascension Day", "1963-06-03": "Whit Monday", "1963-08-01": "National Day", "1963-09-07": "Knabenschiessen", "1963-09-08": "Knabenschiessen", "1963-09-09": "Knabenschiessen", + "1963-12-24": "Christmas Eve", "1963-12-25": "Christmas Day", "1963-12-26": "Saint Stephen's Day", + "1963-12-27": "Bridge Holiday", + "1963-12-30": "Bridge Holiday", + "1963-12-31": "New Year's Eve", "1964-01-01": "New Year's Day", "1964-01-02": "Saint Berchtold's Day", + "1964-03-26": "Day before Good Friday", "1964-03-27": "Good Friday", "1964-03-30": "Easter Monday", "1964-04-20": "Sechsel\u00e4uten", "1964-05-01": "Labor Day", + "1964-05-06": "Day before Ascension Day", "1964-05-07": "Ascension Day", "1964-05-18": "Whit Monday", "1964-08-01": "National Day", "1964-09-12": "Knabenschiessen", "1964-09-13": "Knabenschiessen", "1964-09-14": "Knabenschiessen", + "1964-12-24": "Christmas Eve", "1964-12-25": "Christmas Day", "1964-12-26": "Saint Stephen's Day", + "1964-12-28": "Bridge Holiday", + "1964-12-29": "Bridge Holiday", + "1964-12-30": "Bridge Holiday", + "1964-12-31": "New Year's Eve", "1965-01-01": "New Year's Day", "1965-01-02": "Saint Berchtold's Day", + "1965-04-15": "Day before Good Friday", "1965-04-16": "Good Friday", "1965-04-19": "Easter Monday", "1965-04-26": "Sechsel\u00e4uten", "1965-05-01": "Labor Day", + "1965-05-26": "Day before Ascension Day", "1965-05-27": "Ascension Day", "1965-06-07": "Whit Monday", "1965-08-01": "National Day", "1965-09-11": "Knabenschiessen", "1965-09-12": "Knabenschiessen", "1965-09-13": "Knabenschiessen", + "1965-12-24": "Christmas Eve", "1965-12-25": "Christmas Day", "1965-12-26": "Saint Stephen's Day", + "1965-12-27": "Bridge Holiday", + "1965-12-28": "Bridge Holiday", + "1965-12-29": "Bridge Holiday", + "1965-12-30": "Bridge Holiday", + "1965-12-31": "New Year's Eve", "1966-01-01": "New Year's Day", "1966-01-02": "Saint Berchtold's Day", + "1966-04-07": "Day before Good Friday", "1966-04-08": "Good Friday", "1966-04-11": "Easter Monday", "1966-04-18": "Sechsel\u00e4uten", "1966-05-01": "Labor Day", + "1966-05-18": "Day before Ascension Day", "1966-05-19": "Ascension Day", "1966-05-30": "Whit Monday", "1966-08-01": "National Day", "1966-09-10": "Knabenschiessen", "1966-09-11": "Knabenschiessen", "1966-09-12": "Knabenschiessen", + "1966-12-24": "Christmas Eve", "1966-12-25": "Christmas Day", "1966-12-26": "Saint Stephen's Day", + "1966-12-27": "Bridge Holiday", + "1966-12-28": "Bridge Holiday", + "1966-12-29": "Bridge Holiday", + "1966-12-30": "Bridge Holiday", + "1966-12-31": "New Year's Eve", "1967-01-01": "New Year's Day", "1967-01-02": "Saint Berchtold's Day", + "1967-03-23": "Day before Good Friday", "1967-03-24": "Good Friday", "1967-03-27": "Easter Monday", "1967-04-17": "Sechsel\u00e4uten", "1967-05-01": "Labor Day", + "1967-05-03": "Day before Ascension Day", "1967-05-04": "Ascension Day", "1967-05-15": "Whit Monday", "1967-08-01": "National Day", "1967-09-09": "Knabenschiessen", "1967-09-10": "Knabenschiessen", "1967-09-11": "Knabenschiessen", + "1967-12-24": "Christmas Eve", "1967-12-25": "Christmas Day", "1967-12-26": "Saint Stephen's Day", + "1967-12-27": "Bridge Holiday", + "1967-12-28": "Bridge Holiday", + "1967-12-29": "Bridge Holiday", + "1967-12-31": "New Year's Eve", "1968-01-01": "New Year's Day", "1968-01-02": "Saint Berchtold's Day", + "1968-04-11": "Day before Good Friday", "1968-04-12": "Good Friday", "1968-04-15": "Easter Monday", "1968-04-22": "Sechsel\u00e4uten", "1968-05-01": "Labor Day", + "1968-05-22": "Day before Ascension Day", "1968-05-23": "Ascension Day", + "1968-05-24": "Bridge Holiday for Ascension Day", "1968-06-03": "Whit Monday", "1968-08-01": "National Day", "1968-09-07": "Knabenschiessen", "1968-09-08": "Knabenschiessen", "1968-09-09": "Knabenschiessen", + "1968-12-24": "Christmas Eve", "1968-12-25": "Christmas Day", "1968-12-26": "Saint Stephen's Day", + "1968-12-27": "Bridge Holiday", + "1968-12-30": "Bridge Holiday", + "1968-12-31": "New Year's Eve", "1969-01-01": "New Year's Day", "1969-01-02": "Saint Berchtold's Day", + "1969-04-03": "Day before Good Friday", "1969-04-04": "Good Friday", "1969-04-07": "Easter Monday", "1969-04-21": "Sechsel\u00e4uten", "1969-05-01": "Labor Day", + "1969-05-14": "Day before Ascension Day", "1969-05-15": "Ascension Day", + "1969-05-16": "Bridge Holiday for Ascension Day", "1969-05-26": "Whit Monday", "1969-08-01": "National Day", "1969-09-13": "Knabenschiessen", "1969-09-14": "Knabenschiessen", "1969-09-15": "Knabenschiessen", + "1969-12-24": "Christmas Eve", "1969-12-25": "Christmas Day", "1969-12-26": "Saint Stephen's Day", + "1969-12-29": "Bridge Holiday", + "1969-12-30": "Bridge Holiday", + "1969-12-31": "New Year's Eve", "1970-01-01": "New Year's Day", "1970-01-02": "Saint Berchtold's Day", + "1970-03-26": "Day before Good Friday", "1970-03-27": "Good Friday", "1970-03-30": "Easter Monday", "1970-04-20": "Sechsel\u00e4uten", "1970-05-01": "Labor Day", + "1970-05-06": "Day before Ascension Day", "1970-05-07": "Ascension Day", "1970-05-18": "Whit Monday", "1970-08-01": "National Day", "1970-09-12": "Knabenschiessen", "1970-09-13": "Knabenschiessen", "1970-09-14": "Knabenschiessen", + "1970-12-24": "Christmas Eve", "1970-12-25": "Christmas Day", "1970-12-26": "Saint Stephen's Day", + "1970-12-28": "Bridge Holiday", + "1970-12-29": "Bridge Holiday", + "1970-12-30": "Bridge Holiday", + "1970-12-31": "New Year's Eve", "1971-01-01": "New Year's Day", "1971-01-02": "Saint Berchtold's Day", + "1971-04-08": "Day before Good Friday", "1971-04-09": "Good Friday", "1971-04-12": "Easter Monday", "1971-04-19": "Sechsel\u00e4uten", "1971-05-01": "Labor Day", + "1971-05-19": "Day before Ascension Day", "1971-05-20": "Ascension Day", "1971-05-31": "Whit Monday", "1971-08-01": "National Day", "1971-09-11": "Knabenschiessen", "1971-09-12": "Knabenschiessen", "1971-09-13": "Knabenschiessen", + "1971-12-24": "Christmas Eve", "1971-12-25": "Christmas Day", "1971-12-26": "Saint Stephen's Day", + "1971-12-27": "Bridge Holiday", + "1971-12-28": "Bridge Holiday", + "1971-12-29": "Bridge Holiday", + "1971-12-30": "Bridge Holiday", + "1971-12-31": "New Year's Eve", "1972-01-01": "New Year's Day", "1972-01-02": "Saint Berchtold's Day", + "1972-03-30": "Day before Good Friday", "1972-03-31": "Good Friday", "1972-04-03": "Easter Monday", "1972-04-17": "Sechsel\u00e4uten", "1972-05-01": "Labor Day", + "1972-05-10": "Day before Ascension Day", "1972-05-11": "Ascension Day", "1972-05-22": "Whit Monday", "1972-08-01": "National Day", "1972-09-09": "Knabenschiessen", "1972-09-10": "Knabenschiessen", "1972-09-11": "Knabenschiessen", + "1972-12-24": "Christmas Eve", "1972-12-25": "Christmas Day", "1972-12-26": "Saint Stephen's Day", + "1972-12-27": "Bridge Holiday", + "1972-12-28": "Bridge Holiday", + "1972-12-29": "Bridge Holiday", + "1972-12-31": "New Year's Eve", "1973-01-01": "New Year's Day", "1973-01-02": "Saint Berchtold's Day", "1973-04-16": "Sechsel\u00e4uten", + "1973-04-19": "Day before Good Friday", "1973-04-20": "Good Friday", "1973-04-23": "Easter Monday", "1973-05-01": "Labor Day", + "1973-05-30": "Day before Ascension Day", "1973-05-31": "Ascension Day", + "1973-06-01": "Bridge Holiday for Ascension Day", "1973-06-11": "Whit Monday", "1973-08-01": "National Day", "1973-09-08": "Knabenschiessen", "1973-09-09": "Knabenschiessen", "1973-09-10": "Knabenschiessen", + "1973-12-24": "Christmas Eve", "1973-12-25": "Christmas Day", "1973-12-26": "Saint Stephen's Day", + "1973-12-27": "Bridge Holiday", + "1973-12-28": "Bridge Holiday", + "1973-12-31": "New Year's Eve", "1974-01-01": "New Year's Day", "1974-01-02": "Saint Berchtold's Day", + "1974-04-11": "Day before Good Friday", "1974-04-12": "Good Friday", "1974-04-15": "Easter Monday", "1974-04-22": "Sechsel\u00e4uten", "1974-05-01": "Labor Day", + "1974-05-22": "Day before Ascension Day", "1974-05-23": "Ascension Day", + "1974-05-24": "Bridge Holiday for Ascension Day", "1974-06-03": "Whit Monday", "1974-08-01": "National Day", "1974-09-07": "Knabenschiessen", "1974-09-08": "Knabenschiessen", "1974-09-09": "Knabenschiessen", + "1974-12-24": "Christmas Eve", "1974-12-25": "Christmas Day", "1974-12-26": "Saint Stephen's Day", + "1974-12-27": "Bridge Holiday", + "1974-12-30": "Bridge Holiday", + "1974-12-31": "New Year's Eve", "1975-01-01": "New Year's Day", "1975-01-02": "Saint Berchtold's Day", + "1975-03-27": "Day before Good Friday", "1975-03-28": "Good Friday", "1975-03-31": "Easter Monday", "1975-04-21": "Sechsel\u00e4uten", "1975-05-01": "Labor Day", + "1975-05-07": "Day before Ascension Day", "1975-05-08": "Ascension Day", + "1975-05-09": "Bridge Holiday for Ascension Day", "1975-05-19": "Whit Monday", "1975-08-01": "National Day", "1975-09-13": "Knabenschiessen", "1975-09-14": "Knabenschiessen", "1975-09-15": "Knabenschiessen", + "1975-12-24": "Christmas Eve", "1975-12-25": "Christmas Day", "1975-12-26": "Saint Stephen's Day", + "1975-12-29": "Bridge Holiday", + "1975-12-30": "Bridge Holiday", + "1975-12-31": "New Year's Eve", "1976-01-01": "New Year's Day", "1976-01-02": "Saint Berchtold's Day", + "1976-04-15": "Day before Good Friday", "1976-04-16": "Good Friday", "1976-04-19": "Easter Monday", "1976-04-26": "Sechsel\u00e4uten", "1976-05-01": "Labor Day", + "1976-05-26": "Day before Ascension Day", "1976-05-27": "Ascension Day", "1976-06-07": "Whit Monday", "1976-08-01": "National Day", "1976-09-11": "Knabenschiessen", "1976-09-12": "Knabenschiessen", "1976-09-13": "Knabenschiessen", + "1976-12-24": "Christmas Eve", "1976-12-25": "Christmas Day", "1976-12-26": "Saint Stephen's Day", + "1976-12-27": "Bridge Holiday", + "1976-12-28": "Bridge Holiday", + "1976-12-29": "Bridge Holiday", + "1976-12-30": "Bridge Holiday", + "1976-12-31": "New Year's Eve", "1977-01-01": "New Year's Day", "1977-01-02": "Saint Berchtold's Day", + "1977-04-07": "Day before Good Friday", "1977-04-08": "Good Friday", "1977-04-11": "Easter Monday", "1977-04-18": "Sechsel\u00e4uten", "1977-05-01": "Labor Day", + "1977-05-18": "Day before Ascension Day", "1977-05-19": "Ascension Day", "1977-05-30": "Whit Monday", "1977-08-01": "National Day", "1977-09-10": "Knabenschiessen", "1977-09-11": "Knabenschiessen", "1977-09-12": "Knabenschiessen", + "1977-12-24": "Christmas Eve", "1977-12-25": "Christmas Day", "1977-12-26": "Saint Stephen's Day", + "1977-12-27": "Bridge Holiday", + "1977-12-28": "Bridge Holiday", + "1977-12-29": "Bridge Holiday", + "1977-12-30": "Bridge Holiday", + "1977-12-31": "New Year's Eve", "1978-01-01": "New Year's Day", "1978-01-02": "Saint Berchtold's Day", + "1978-03-23": "Day before Good Friday", "1978-03-24": "Good Friday", "1978-03-27": "Easter Monday", "1978-04-17": "Sechsel\u00e4uten", "1978-05-01": "Labor Day", + "1978-05-03": "Day before Ascension Day", "1978-05-04": "Ascension Day", "1978-05-15": "Whit Monday", "1978-08-01": "National Day", "1978-09-09": "Knabenschiessen", "1978-09-10": "Knabenschiessen", "1978-09-11": "Knabenschiessen", + "1978-12-24": "Christmas Eve", "1978-12-25": "Christmas Day", "1978-12-26": "Saint Stephen's Day", + "1978-12-27": "Bridge Holiday", + "1978-12-28": "Bridge Holiday", + "1978-12-29": "Bridge Holiday", + "1978-12-31": "New Year's Eve", "1979-01-01": "New Year's Day", "1979-01-02": "Saint Berchtold's Day", + "1979-04-12": "Day before Good Friday", "1979-04-13": "Good Friday", "1979-04-16": "Easter Monday", "1979-04-23": "Sechsel\u00e4uten", "1979-05-01": "Labor Day", + "1979-05-23": "Day before Ascension Day", "1979-05-24": "Ascension Day", + "1979-05-25": "Bridge Holiday for Ascension Day", "1979-06-04": "Whit Monday", "1979-08-01": "National Day", "1979-09-08": "Knabenschiessen", "1979-09-09": "Knabenschiessen", "1979-09-10": "Knabenschiessen", + "1979-12-24": "Christmas Eve", "1979-12-25": "Christmas Day", "1979-12-26": "Saint Stephen's Day", + "1979-12-27": "Bridge Holiday", + "1979-12-28": "Bridge Holiday", + "1979-12-31": "New Year's Eve", "1980-01-01": "New Year's Day", "1980-01-02": "Saint Berchtold's Day", + "1980-04-03": "Day before Good Friday", "1980-04-04": "Good Friday", "1980-04-07": "Easter Monday", "1980-04-21": "Sechsel\u00e4uten", "1980-05-01": "Labor Day", + "1980-05-14": "Day before Ascension Day", "1980-05-15": "Ascension Day", + "1980-05-16": "Bridge Holiday for Ascension Day", "1980-05-26": "Whit Monday", "1980-08-01": "National Day", "1980-09-13": "Knabenschiessen", "1980-09-14": "Knabenschiessen", "1980-09-15": "Knabenschiessen", + "1980-12-24": "Christmas Eve", "1980-12-25": "Christmas Day", "1980-12-26": "Saint Stephen's Day", + "1980-12-29": "Bridge Holiday", + "1980-12-30": "Bridge Holiday", + "1980-12-31": "New Year's Eve", "1981-01-01": "New Year's Day", "1981-01-02": "Saint Berchtold's Day", + "1981-04-16": "Day before Good Friday", "1981-04-17": "Good Friday", "1981-04-20": "Easter Monday", "1981-04-27": "Sechsel\u00e4uten", "1981-05-01": "Labor Day", + "1981-05-27": "Day before Ascension Day", "1981-05-28": "Ascension Day", "1981-06-08": "Whit Monday", "1981-08-01": "National Day", "1981-09-12": "Knabenschiessen", "1981-09-13": "Knabenschiessen", "1981-09-14": "Knabenschiessen", + "1981-12-24": "Christmas Eve", "1981-12-25": "Christmas Day", "1981-12-26": "Saint Stephen's Day", + "1981-12-28": "Bridge Holiday", + "1981-12-29": "Bridge Holiday", + "1981-12-30": "Bridge Holiday", + "1981-12-31": "New Year's Eve", "1982-01-01": "New Year's Day", "1982-01-02": "Saint Berchtold's Day", + "1982-04-08": "Day before Good Friday", "1982-04-09": "Good Friday", "1982-04-12": "Easter Monday", "1982-04-19": "Sechsel\u00e4uten", "1982-05-01": "Labor Day", + "1982-05-19": "Day before Ascension Day", "1982-05-20": "Ascension Day", "1982-05-31": "Whit Monday", "1982-08-01": "National Day", "1982-09-11": "Knabenschiessen", "1982-09-12": "Knabenschiessen", "1982-09-13": "Knabenschiessen", + "1982-12-24": "Christmas Eve", "1982-12-25": "Christmas Day", "1982-12-26": "Saint Stephen's Day", + "1982-12-27": "Bridge Holiday", + "1982-12-28": "Bridge Holiday", + "1982-12-29": "Bridge Holiday", + "1982-12-30": "Bridge Holiday", + "1982-12-31": "New Year's Eve", "1983-01-01": "New Year's Day", "1983-01-02": "Saint Berchtold's Day", + "1983-03-31": "Day before Good Friday", "1983-04-01": "Good Friday", "1983-04-04": "Easter Monday", "1983-04-18": "Sechsel\u00e4uten", "1983-05-01": "Labor Day", + "1983-05-11": "Day before Ascension Day", "1983-05-12": "Ascension Day", "1983-05-23": "Whit Monday", "1983-08-01": "National Day", "1983-09-10": "Knabenschiessen", "1983-09-11": "Knabenschiessen", "1983-09-12": "Knabenschiessen", + "1983-12-24": "Christmas Eve", "1983-12-25": "Christmas Day", "1983-12-26": "Saint Stephen's Day", + "1983-12-27": "Bridge Holiday", + "1983-12-28": "Bridge Holiday", + "1983-12-29": "Bridge Holiday", + "1983-12-30": "Bridge Holiday", + "1983-12-31": "New Year's Eve", "1984-01-01": "New Year's Day", "1984-01-02": "Saint Berchtold's Day", "1984-04-16": "Sechsel\u00e4uten", + "1984-04-19": "Day before Good Friday", "1984-04-20": "Good Friday", "1984-04-23": "Easter Monday", "1984-05-01": "Labor Day", + "1984-05-30": "Day before Ascension Day", "1984-05-31": "Ascension Day", + "1984-06-01": "Bridge Holiday for Ascension Day", "1984-06-11": "Whit Monday", "1984-08-01": "National Day", "1984-09-08": "Knabenschiessen", "1984-09-09": "Knabenschiessen", "1984-09-10": "Knabenschiessen", + "1984-12-24": "Christmas Eve", "1984-12-25": "Christmas Day", "1984-12-26": "Saint Stephen's Day", + "1984-12-27": "Bridge Holiday", + "1984-12-28": "Bridge Holiday", + "1984-12-31": "New Year's Eve", "1985-01-01": "New Year's Day", "1985-01-02": "Saint Berchtold's Day", + "1985-04-04": "Day before Good Friday", "1985-04-05": "Good Friday", "1985-04-08": "Easter Monday", "1985-04-15": "Sechsel\u00e4uten", "1985-05-01": "Labor Day", + "1985-05-15": "Day before Ascension Day", "1985-05-16": "Ascension Day", + "1985-05-17": "Bridge Holiday for Ascension Day", "1985-05-27": "Whit Monday", "1985-08-01": "National Day", "1985-09-07": "Knabenschiessen", "1985-09-08": "Knabenschiessen", "1985-09-09": "Knabenschiessen", + "1985-12-24": "Christmas Eve", "1985-12-25": "Christmas Day", "1985-12-26": "Saint Stephen's Day", + "1985-12-27": "Bridge Holiday", + "1985-12-30": "Bridge Holiday", + "1985-12-31": "New Year's Eve", "1986-01-01": "New Year's Day", "1986-01-02": "Saint Berchtold's Day", + "1986-03-27": "Day before Good Friday", "1986-03-28": "Good Friday", "1986-03-31": "Easter Monday", "1986-04-21": "Sechsel\u00e4uten", "1986-05-01": "Labor Day", + "1986-05-07": "Day before Ascension Day", "1986-05-08": "Ascension Day", + "1986-05-09": "Bridge Holiday for Ascension Day", "1986-05-19": "Whit Monday", "1986-08-01": "National Day", "1986-09-13": "Knabenschiessen", "1986-09-14": "Knabenschiessen", "1986-09-15": "Knabenschiessen", + "1986-12-24": "Christmas Eve", "1986-12-25": "Christmas Day", "1986-12-26": "Saint Stephen's Day", + "1986-12-29": "Bridge Holiday", + "1986-12-30": "Bridge Holiday", + "1986-12-31": "New Year's Eve", "1987-01-01": "New Year's Day", "1987-01-02": "Saint Berchtold's Day", + "1987-04-16": "Day before Good Friday", "1987-04-17": "Good Friday", "1987-04-20": "Easter Monday", "1987-04-27": "Sechsel\u00e4uten", "1987-05-01": "Labor Day", + "1987-05-27": "Day before Ascension Day", "1987-05-28": "Ascension Day", "1987-06-08": "Whit Monday", "1987-08-01": "National Day", "1987-09-12": "Knabenschiessen", "1987-09-13": "Knabenschiessen", "1987-09-14": "Knabenschiessen", + "1987-12-24": "Christmas Eve", "1987-12-25": "Christmas Day", "1987-12-26": "Saint Stephen's Day", + "1987-12-28": "Bridge Holiday", + "1987-12-29": "Bridge Holiday", + "1987-12-30": "Bridge Holiday", + "1987-12-31": "New Year's Eve", "1988-01-01": "New Year's Day", "1988-01-02": "Saint Berchtold's Day", + "1988-03-31": "Day before Good Friday", "1988-04-01": "Good Friday", "1988-04-04": "Easter Monday", "1988-04-18": "Sechsel\u00e4uten", "1988-05-01": "Labor Day", + "1988-05-11": "Day before Ascension Day", "1988-05-12": "Ascension Day", "1988-05-23": "Whit Monday", "1988-08-01": "National Day", "1988-09-10": "Knabenschiessen", "1988-09-11": "Knabenschiessen", "1988-09-12": "Knabenschiessen", + "1988-12-24": "Christmas Eve", "1988-12-25": "Christmas Day", "1988-12-26": "Saint Stephen's Day", + "1988-12-27": "Bridge Holiday", + "1988-12-28": "Bridge Holiday", + "1988-12-29": "Bridge Holiday", + "1988-12-30": "Bridge Holiday", + "1988-12-31": "New Year's Eve", "1989-01-01": "New Year's Day", "1989-01-02": "Saint Berchtold's Day", + "1989-03-23": "Day before Good Friday", "1989-03-24": "Good Friday", "1989-03-27": "Easter Monday", "1989-04-17": "Sechsel\u00e4uten", "1989-05-01": "Labor Day", + "1989-05-03": "Day before Ascension Day", "1989-05-04": "Ascension Day", "1989-05-15": "Whit Monday", "1989-08-01": "National Day", "1989-09-09": "Knabenschiessen", "1989-09-10": "Knabenschiessen", "1989-09-11": "Knabenschiessen", + "1989-12-24": "Christmas Eve", "1989-12-25": "Christmas Day", "1989-12-26": "Saint Stephen's Day", + "1989-12-27": "Bridge Holiday", + "1989-12-28": "Bridge Holiday", + "1989-12-29": "Bridge Holiday", + "1989-12-31": "New Year's Eve", "1990-01-01": "New Year's Day", "1990-01-02": "Saint Berchtold's Day", + "1990-04-12": "Day before Good Friday", "1990-04-13": "Good Friday", "1990-04-16": "Easter Monday", "1990-04-23": "Sechsel\u00e4uten", "1990-05-01": "Labor Day", + "1990-05-23": "Day before Ascension Day", "1990-05-24": "Ascension Day", + "1990-05-25": "Bridge Holiday for Ascension Day", "1990-06-04": "Whit Monday", "1990-08-01": "National Day", "1990-09-08": "Knabenschiessen", "1990-09-09": "Knabenschiessen", "1990-09-10": "Knabenschiessen", + "1990-12-24": "Christmas Eve", "1990-12-25": "Christmas Day", "1990-12-26": "Saint Stephen's Day", + "1990-12-27": "Bridge Holiday", + "1990-12-28": "Bridge Holiday", + "1990-12-31": "New Year's Eve", "1991-01-01": "New Year's Day", "1991-01-02": "Saint Berchtold's Day", + "1991-03-28": "Day before Good Friday", "1991-03-29": "Good Friday", "1991-04-01": "Easter Monday", "1991-04-15": "Sechsel\u00e4uten", "1991-05-01": "Labor Day", + "1991-05-08": "Day before Ascension Day", "1991-05-09": "Ascension Day", + "1991-05-10": "Bridge Holiday for Ascension Day", "1991-05-20": "Whit Monday", "1991-08-01": "National Day", "1991-09-07": "Knabenschiessen", "1991-09-08": "Knabenschiessen", "1991-09-09": "Knabenschiessen", + "1991-12-24": "Christmas Eve", "1991-12-25": "Christmas Day", "1991-12-26": "Saint Stephen's Day", + "1991-12-27": "Bridge Holiday", + "1991-12-30": "Bridge Holiday", + "1991-12-31": "New Year's Eve", "1992-01-01": "New Year's Day", "1992-01-02": "Saint Berchtold's Day", + "1992-04-16": "Day before Good Friday", "1992-04-17": "Good Friday", "1992-04-20": "Easter Monday", "1992-04-27": "Sechsel\u00e4uten", "1992-05-01": "Labor Day", + "1992-05-27": "Day before Ascension Day", "1992-05-28": "Ascension Day", "1992-06-08": "Whit Monday", "1992-08-01": "National Day", "1992-09-12": "Knabenschiessen", "1992-09-13": "Knabenschiessen", "1992-09-14": "Knabenschiessen", + "1992-12-24": "Christmas Eve", "1992-12-25": "Christmas Day", "1992-12-26": "Saint Stephen's Day", + "1992-12-28": "Bridge Holiday", + "1992-12-29": "Bridge Holiday", + "1992-12-30": "Bridge Holiday", + "1992-12-31": "New Year's Eve", "1993-01-01": "New Year's Day", "1993-01-02": "Saint Berchtold's Day", + "1993-04-08": "Day before Good Friday", "1993-04-09": "Good Friday", "1993-04-12": "Easter Monday", "1993-04-19": "Sechsel\u00e4uten", "1993-05-01": "Labor Day", + "1993-05-19": "Day before Ascension Day", "1993-05-20": "Ascension Day", "1993-05-31": "Whit Monday", "1993-08-01": "National Day", "1993-09-11": "Knabenschiessen", "1993-09-12": "Knabenschiessen", "1993-09-13": "Knabenschiessen", + "1993-12-24": "Christmas Eve", "1993-12-25": "Christmas Day", "1993-12-26": "Saint Stephen's Day", + "1993-12-27": "Bridge Holiday", + "1993-12-28": "Bridge Holiday", + "1993-12-29": "Bridge Holiday", + "1993-12-30": "Bridge Holiday", + "1993-12-31": "New Year's Eve", "1994-01-01": "New Year's Day", "1994-01-02": "Saint Berchtold's Day", + "1994-03-31": "Day before Good Friday", "1994-04-01": "Good Friday", "1994-04-04": "Easter Monday", "1994-04-18": "Sechsel\u00e4uten", "1994-05-01": "Labor Day", + "1994-05-11": "Day before Ascension Day", "1994-05-12": "Ascension Day", "1994-05-23": "Whit Monday", "1994-08-01": "National Day", "1994-09-10": "Knabenschiessen", "1994-09-11": "Knabenschiessen", "1994-09-12": "Knabenschiessen", + "1994-12-24": "Christmas Eve", "1994-12-25": "Christmas Day", "1994-12-26": "Saint Stephen's Day", + "1994-12-27": "Bridge Holiday", + "1994-12-28": "Bridge Holiday", + "1994-12-29": "Bridge Holiday", + "1994-12-30": "Bridge Holiday", + "1994-12-31": "New Year's Eve", "1995-01-01": "New Year's Day", "1995-01-02": "Saint Berchtold's Day", + "1995-04-13": "Day before Good Friday", "1995-04-14": "Good Friday", "1995-04-17": "Easter Monday", "1995-04-24": "Sechsel\u00e4uten", "1995-05-01": "Labor Day", + "1995-05-24": "Day before Ascension Day", "1995-05-25": "Ascension Day", "1995-06-05": "Whit Monday", "1995-08-01": "National Day", "1995-09-09": "Knabenschiessen", "1995-09-10": "Knabenschiessen", "1995-09-11": "Knabenschiessen", + "1995-12-24": "Christmas Eve", "1995-12-25": "Christmas Day", "1995-12-26": "Saint Stephen's Day", + "1995-12-27": "Bridge Holiday", + "1995-12-28": "Bridge Holiday", + "1995-12-29": "Bridge Holiday", + "1995-12-31": "New Year's Eve", "1996-01-01": "New Year's Day", "1996-01-02": "Saint Berchtold's Day", + "1996-04-04": "Day before Good Friday", "1996-04-05": "Good Friday", "1996-04-08": "Easter Monday", "1996-04-15": "Sechsel\u00e4uten", "1996-05-01": "Labor Day", + "1996-05-15": "Day before Ascension Day", "1996-05-16": "Ascension Day", + "1996-05-17": "Bridge Holiday for Ascension Day", "1996-05-27": "Whit Monday", "1996-08-01": "National Day", "1996-09-07": "Knabenschiessen", "1996-09-08": "Knabenschiessen", "1996-09-09": "Knabenschiessen", + "1996-12-24": "Christmas Eve", "1996-12-25": "Christmas Day", "1996-12-26": "Saint Stephen's Day", + "1996-12-27": "Bridge Holiday", + "1996-12-30": "Bridge Holiday", + "1996-12-31": "New Year's Eve", "1997-01-01": "New Year's Day", "1997-01-02": "Saint Berchtold's Day", + "1997-03-27": "Day before Good Friday", "1997-03-28": "Good Friday", "1997-03-31": "Easter Monday", "1997-04-21": "Sechsel\u00e4uten", "1997-05-01": "Labor Day", + "1997-05-07": "Day before Ascension Day", "1997-05-08": "Ascension Day", + "1997-05-09": "Bridge Holiday for Ascension Day", "1997-05-19": "Whit Monday", "1997-08-01": "National Day", "1997-09-13": "Knabenschiessen", "1997-09-14": "Knabenschiessen", "1997-09-15": "Knabenschiessen", + "1997-12-24": "Christmas Eve", "1997-12-25": "Christmas Day", "1997-12-26": "Saint Stephen's Day", + "1997-12-29": "Bridge Holiday", + "1997-12-30": "Bridge Holiday", + "1997-12-31": "New Year's Eve", "1998-01-01": "New Year's Day", "1998-01-02": "Saint Berchtold's Day", + "1998-04-09": "Day before Good Friday", "1998-04-10": "Good Friday", "1998-04-13": "Easter Monday", "1998-04-20": "Sechsel\u00e4uten", "1998-05-01": "Labor Day", + "1998-05-20": "Day before Ascension Day", "1998-05-21": "Ascension Day", "1998-06-01": "Whit Monday", "1998-08-01": "National Day", "1998-09-12": "Knabenschiessen", "1998-09-13": "Knabenschiessen", "1998-09-14": "Knabenschiessen", + "1998-12-24": "Christmas Eve", "1998-12-25": "Christmas Day", "1998-12-26": "Saint Stephen's Day", + "1998-12-28": "Bridge Holiday", + "1998-12-29": "Bridge Holiday", + "1998-12-30": "Bridge Holiday", + "1998-12-31": "New Year's Eve", "1999-01-01": "New Year's Day", "1999-01-02": "Saint Berchtold's Day", + "1999-04-01": "Day before Good Friday", "1999-04-02": "Good Friday", "1999-04-05": "Easter Monday", "1999-04-19": "Sechsel\u00e4uten", "1999-05-01": "Labor Day", + "1999-05-12": "Day before Ascension Day", "1999-05-13": "Ascension Day", "1999-05-24": "Whit Monday", "1999-08-01": "National Day", "1999-09-11": "Knabenschiessen", "1999-09-12": "Knabenschiessen", "1999-09-13": "Knabenschiessen", + "1999-12-24": "Christmas Eve", "1999-12-25": "Christmas Day", "1999-12-26": "Saint Stephen's Day", + "1999-12-27": "Bridge Holiday", + "1999-12-28": "Bridge Holiday", + "1999-12-29": "Bridge Holiday", + "1999-12-30": "Bridge Holiday", + "1999-12-31": "New Year's Eve", "2000-01-01": "New Year's Day", "2000-01-02": "Saint Berchtold's Day", "2000-04-17": "Sechsel\u00e4uten", + "2000-04-20": "Day before Good Friday", "2000-04-21": "Good Friday", "2000-04-24": "Easter Monday", "2000-05-01": "Labor Day", + "2000-05-31": "Day before Ascension Day", "2000-06-01": "Ascension Day", "2000-06-12": "Whit Monday", "2000-08-01": "National Day", "2000-09-09": "Knabenschiessen", "2000-09-10": "Knabenschiessen", "2000-09-11": "Knabenschiessen", + "2000-12-24": "Christmas Eve", "2000-12-25": "Christmas Day", "2000-12-26": "Saint Stephen's Day", + "2000-12-27": "Bridge Holiday", + "2000-12-28": "Bridge Holiday", + "2000-12-29": "Bridge Holiday", + "2000-12-31": "New Year's Eve", "2001-01-01": "New Year's Day", "2001-01-02": "Saint Berchtold's Day", + "2001-04-12": "Day before Good Friday", "2001-04-13": "Good Friday", "2001-04-16": "Easter Monday", "2001-04-23": "Sechsel\u00e4uten", "2001-05-01": "Labor Day", + "2001-05-23": "Day before Ascension Day", "2001-05-24": "Ascension Day", + "2001-05-25": "Bridge Holiday for Ascension Day", "2001-06-04": "Whit Monday", "2001-08-01": "National Day", "2001-09-08": "Knabenschiessen", "2001-09-09": "Knabenschiessen", "2001-09-10": "Knabenschiessen", + "2001-12-24": "Christmas Eve", "2001-12-25": "Christmas Day", "2001-12-26": "Saint Stephen's Day", + "2001-12-27": "Bridge Holiday", + "2001-12-28": "Bridge Holiday", + "2001-12-31": "New Year's Eve", "2002-01-01": "New Year's Day", "2002-01-02": "Saint Berchtold's Day", + "2002-03-28": "Day before Good Friday", "2002-03-29": "Good Friday", "2002-04-01": "Easter Monday", "2002-04-15": "Sechsel\u00e4uten", "2002-05-01": "Labor Day", + "2002-05-08": "Day before Ascension Day", "2002-05-09": "Ascension Day", + "2002-05-10": "Bridge Holiday for Ascension Day", "2002-05-20": "Whit Monday", "2002-08-01": "National Day", "2002-09-07": "Knabenschiessen", "2002-09-08": "Knabenschiessen", "2002-09-09": "Knabenschiessen", + "2002-12-24": "Christmas Eve", "2002-12-25": "Christmas Day", "2002-12-26": "Saint Stephen's Day", + "2002-12-27": "Bridge Holiday", + "2002-12-30": "Bridge Holiday", + "2002-12-31": "New Year's Eve", "2003-01-01": "New Year's Day", "2003-01-02": "Saint Berchtold's Day", + "2003-04-17": "Day before Good Friday", "2003-04-18": "Good Friday", "2003-04-21": "Easter Monday", "2003-04-28": "Sechsel\u00e4uten", "2003-05-01": "Labor Day", + "2003-05-28": "Day before Ascension Day", "2003-05-29": "Ascension Day", + "2003-05-30": "Bridge Holiday for Ascension Day", "2003-06-09": "Whit Monday", "2003-08-01": "National Day", "2003-09-13": "Knabenschiessen", "2003-09-14": "Knabenschiessen", "2003-09-15": "Knabenschiessen", + "2003-12-24": "Christmas Eve", "2003-12-25": "Christmas Day", "2003-12-26": "Saint Stephen's Day", + "2003-12-29": "Bridge Holiday", + "2003-12-30": "Bridge Holiday", + "2003-12-31": "New Year's Eve", "2004-01-01": "New Year's Day", "2004-01-02": "Saint Berchtold's Day", + "2004-04-08": "Day before Good Friday", "2004-04-09": "Good Friday", "2004-04-12": "Easter Monday", "2004-04-19": "Sechsel\u00e4uten", "2004-05-01": "Labor Day", + "2004-05-19": "Day before Ascension Day", "2004-05-20": "Ascension Day", "2004-05-31": "Whit Monday", "2004-08-01": "National Day", "2004-09-11": "Knabenschiessen", "2004-09-12": "Knabenschiessen", "2004-09-13": "Knabenschiessen", + "2004-12-24": "Christmas Eve", "2004-12-25": "Christmas Day", "2004-12-26": "Saint Stephen's Day", + "2004-12-27": "Bridge Holiday", + "2004-12-28": "Bridge Holiday", + "2004-12-29": "Bridge Holiday", + "2004-12-30": "Bridge Holiday", + "2004-12-31": "New Year's Eve", "2005-01-01": "New Year's Day", "2005-01-02": "Saint Berchtold's Day", + "2005-03-24": "Day before Good Friday", "2005-03-25": "Good Friday", "2005-03-28": "Easter Monday", "2005-04-18": "Sechsel\u00e4uten", "2005-05-01": "Labor Day", + "2005-05-04": "Day before Ascension Day", "2005-05-05": "Ascension Day", "2005-05-16": "Whit Monday", "2005-08-01": "National Day", "2005-09-10": "Knabenschiessen", "2005-09-11": "Knabenschiessen", "2005-09-12": "Knabenschiessen", + "2005-12-24": "Christmas Eve", "2005-12-25": "Christmas Day", "2005-12-26": "Saint Stephen's Day", + "2005-12-27": "Bridge Holiday", + "2005-12-28": "Bridge Holiday", + "2005-12-29": "Bridge Holiday", + "2005-12-30": "Bridge Holiday", + "2005-12-31": "New Year's Eve", "2006-01-01": "New Year's Day", "2006-01-02": "Saint Berchtold's Day", + "2006-04-13": "Day before Good Friday", "2006-04-14": "Good Friday", "2006-04-17": "Easter Monday", "2006-04-24": "Sechsel\u00e4uten", "2006-05-01": "Labor Day", + "2006-05-24": "Day before Ascension Day", "2006-05-25": "Ascension Day", "2006-06-05": "Whit Monday", "2006-08-01": "National Day", "2006-09-09": "Knabenschiessen", "2006-09-10": "Knabenschiessen", "2006-09-11": "Knabenschiessen", + "2006-12-24": "Christmas Eve", "2006-12-25": "Christmas Day", "2006-12-26": "Saint Stephen's Day", + "2006-12-27": "Bridge Holiday", + "2006-12-28": "Bridge Holiday", + "2006-12-29": "Bridge Holiday", + "2006-12-31": "New Year's Eve", "2007-01-01": "New Year's Day", "2007-01-02": "Saint Berchtold's Day", + "2007-04-05": "Day before Good Friday", "2007-04-06": "Good Friday", "2007-04-09": "Easter Monday", "2007-04-16": "Sechsel\u00e4uten", "2007-05-01": "Labor Day", + "2007-05-16": "Day before Ascension Day", "2007-05-17": "Ascension Day", + "2007-05-18": "Bridge Holiday for Ascension Day", "2007-05-28": "Whit Monday", "2007-08-01": "National Day", "2007-09-08": "Knabenschiessen", "2007-09-09": "Knabenschiessen", "2007-09-10": "Knabenschiessen", + "2007-12-24": "Christmas Eve", "2007-12-25": "Christmas Day", "2007-12-26": "Saint Stephen's Day", + "2007-12-27": "Bridge Holiday", + "2007-12-28": "Bridge Holiday", + "2007-12-31": "New Year's Eve", "2008-01-01": "New Year's Day", "2008-01-02": "Saint Berchtold's Day", + "2008-03-20": "Day before Good Friday", "2008-03-21": "Good Friday", "2008-03-24": "Easter Monday", "2008-04-21": "Sechsel\u00e4uten", + "2008-04-30": "Day before Ascension Day", "2008-05-01": "Ascension Day; Labor Day", + "2008-05-02": "Bridge Holiday for Ascension Day", "2008-05-12": "Whit Monday", "2008-08-01": "National Day", "2008-09-13": "Knabenschiessen", "2008-09-14": "Knabenschiessen", "2008-09-15": "Knabenschiessen", + "2008-12-24": "Christmas Eve", "2008-12-25": "Christmas Day", "2008-12-26": "Saint Stephen's Day", + "2008-12-29": "Bridge Holiday", + "2008-12-30": "Bridge Holiday", + "2008-12-31": "New Year's Eve", "2009-01-01": "New Year's Day", "2009-01-02": "Saint Berchtold's Day", + "2009-04-09": "Day before Good Friday", "2009-04-10": "Good Friday", "2009-04-13": "Easter Monday", "2009-04-20": "Sechsel\u00e4uten", "2009-05-01": "Labor Day", + "2009-05-20": "Day before Ascension Day", "2009-05-21": "Ascension Day", "2009-06-01": "Whit Monday", "2009-08-01": "National Day", "2009-09-12": "Knabenschiessen", "2009-09-13": "Knabenschiessen", "2009-09-14": "Knabenschiessen", + "2009-12-24": "Christmas Eve", "2009-12-25": "Christmas Day", "2009-12-26": "Saint Stephen's Day", + "2009-12-28": "Bridge Holiday", + "2009-12-29": "Bridge Holiday", + "2009-12-30": "Bridge Holiday", + "2009-12-31": "New Year's Eve", "2010-01-01": "New Year's Day", "2010-01-02": "Saint Berchtold's Day", + "2010-04-01": "Day before Good Friday", "2010-04-02": "Good Friday", "2010-04-05": "Easter Monday", "2010-04-19": "Sechsel\u00e4uten", "2010-05-01": "Labor Day", + "2010-05-12": "Day before Ascension Day", "2010-05-13": "Ascension Day", "2010-05-24": "Whit Monday", "2010-08-01": "National Day", "2010-09-11": "Knabenschiessen", "2010-09-12": "Knabenschiessen", "2010-09-13": "Knabenschiessen", + "2010-12-24": "Christmas Eve", "2010-12-25": "Christmas Day", "2010-12-26": "Saint Stephen's Day", + "2010-12-27": "Bridge Holiday", + "2010-12-28": "Bridge Holiday", + "2010-12-29": "Bridge Holiday", + "2010-12-30": "Bridge Holiday", + "2010-12-31": "New Year's Eve", "2011-01-01": "New Year's Day", "2011-01-02": "Saint Berchtold's Day", "2011-04-18": "Sechsel\u00e4uten", + "2011-04-21": "Day before Good Friday", "2011-04-22": "Good Friday", "2011-04-25": "Easter Monday", "2011-05-01": "Labor Day", + "2011-06-01": "Day before Ascension Day", "2011-06-02": "Ascension Day", "2011-06-13": "Whit Monday", "2011-08-01": "National Day", "2011-09-10": "Knabenschiessen", "2011-09-11": "Knabenschiessen", "2011-09-12": "Knabenschiessen", + "2011-12-24": "Christmas Eve", "2011-12-25": "Christmas Day", "2011-12-26": "Saint Stephen's Day", + "2011-12-27": "Bridge Holiday", + "2011-12-28": "Bridge Holiday", + "2011-12-29": "Bridge Holiday", + "2011-12-30": "Bridge Holiday", + "2011-12-31": "New Year's Eve", "2012-01-01": "New Year's Day", "2012-01-02": "Saint Berchtold's Day", + "2012-04-05": "Day before Good Friday", "2012-04-06": "Good Friday", "2012-04-09": "Easter Monday", "2012-04-16": "Sechsel\u00e4uten", "2012-05-01": "Labor Day", + "2012-05-16": "Day before Ascension Day", "2012-05-17": "Ascension Day", + "2012-05-18": "Bridge Holiday for Ascension Day", "2012-05-28": "Whit Monday", "2012-08-01": "National Day", "2012-09-08": "Knabenschiessen", "2012-09-09": "Knabenschiessen", "2012-09-10": "Knabenschiessen", + "2012-12-24": "Christmas Eve", "2012-12-25": "Christmas Day", "2012-12-26": "Saint Stephen's Day", + "2012-12-27": "Bridge Holiday", + "2012-12-28": "Bridge Holiday", + "2012-12-31": "New Year's Eve", "2013-01-01": "New Year's Day", "2013-01-02": "Saint Berchtold's Day", + "2013-03-28": "Day before Good Friday", "2013-03-29": "Good Friday", "2013-04-01": "Easter Monday", "2013-04-15": "Sechsel\u00e4uten", "2013-05-01": "Labor Day", + "2013-05-08": "Day before Ascension Day", "2013-05-09": "Ascension Day", + "2013-05-10": "Bridge Holiday for Ascension Day", "2013-05-20": "Whit Monday", "2013-08-01": "National Day", "2013-09-07": "Knabenschiessen", "2013-09-08": "Knabenschiessen", "2013-09-09": "Knabenschiessen", + "2013-12-24": "Christmas Eve", "2013-12-25": "Christmas Day", "2013-12-26": "Saint Stephen's Day", + "2013-12-27": "Bridge Holiday", + "2013-12-30": "Bridge Holiday", + "2013-12-31": "New Year's Eve", "2014-01-01": "New Year's Day", "2014-01-02": "Saint Berchtold's Day", + "2014-04-17": "Day before Good Friday", "2014-04-18": "Good Friday", "2014-04-21": "Easter Monday", "2014-04-28": "Sechsel\u00e4uten", "2014-05-01": "Labor Day", + "2014-05-28": "Day before Ascension Day", "2014-05-29": "Ascension Day", + "2014-05-30": "Bridge Holiday for Ascension Day", "2014-06-09": "Whit Monday", "2014-08-01": "National Day", "2014-09-13": "Knabenschiessen", "2014-09-14": "Knabenschiessen", "2014-09-15": "Knabenschiessen", + "2014-12-24": "Christmas Eve", "2014-12-25": "Christmas Day", "2014-12-26": "Saint Stephen's Day", + "2014-12-29": "Bridge Holiday", + "2014-12-30": "Bridge Holiday", + "2014-12-31": "New Year's Eve", "2015-01-01": "New Year's Day", "2015-01-02": "Saint Berchtold's Day", + "2015-04-02": "Day before Good Friday", "2015-04-03": "Good Friday", "2015-04-06": "Easter Monday", "2015-04-20": "Sechsel\u00e4uten", "2015-05-01": "Labor Day", + "2015-05-13": "Day before Ascension Day", "2015-05-14": "Ascension Day", "2015-05-25": "Whit Monday", "2015-08-01": "National Day", "2015-09-12": "Knabenschiessen", "2015-09-13": "Knabenschiessen", "2015-09-14": "Knabenschiessen", + "2015-12-24": "Christmas Eve", "2015-12-25": "Christmas Day", "2015-12-26": "Saint Stephen's Day", + "2015-12-28": "Bridge Holiday", + "2015-12-29": "Bridge Holiday", + "2015-12-30": "Bridge Holiday", + "2015-12-31": "New Year's Eve", "2016-01-01": "New Year's Day", "2016-01-02": "Saint Berchtold's Day", + "2016-03-24": "Day before Good Friday", "2016-03-25": "Good Friday", "2016-03-28": "Easter Monday", "2016-04-18": "Sechsel\u00e4uten", "2016-05-01": "Labor Day", + "2016-05-04": "Day before Ascension Day", "2016-05-05": "Ascension Day", "2016-05-16": "Whit Monday", "2016-08-01": "National Day", "2016-09-10": "Knabenschiessen", "2016-09-11": "Knabenschiessen", "2016-09-12": "Knabenschiessen", + "2016-12-24": "Christmas Eve", "2016-12-25": "Christmas Day", "2016-12-26": "Saint Stephen's Day", + "2016-12-27": "Bridge Holiday", + "2016-12-28": "Bridge Holiday", + "2016-12-29": "Bridge Holiday", + "2016-12-30": "Bridge Holiday", + "2016-12-31": "New Year's Eve", "2017-01-01": "New Year's Day", "2017-01-02": "Saint Berchtold's Day", + "2017-04-13": "Day before Good Friday", "2017-04-14": "Good Friday", "2017-04-17": "Easter Monday", "2017-04-24": "Sechsel\u00e4uten", "2017-05-01": "Labor Day", + "2017-05-24": "Day before Ascension Day", "2017-05-25": "Ascension Day", "2017-06-05": "Whit Monday", "2017-08-01": "National Day", "2017-09-09": "Knabenschiessen", "2017-09-10": "Knabenschiessen", "2017-09-11": "Knabenschiessen", + "2017-12-24": "Christmas Eve", "2017-12-25": "Christmas Day", "2017-12-26": "Saint Stephen's Day", + "2017-12-27": "Bridge Holiday", + "2017-12-28": "Bridge Holiday", + "2017-12-29": "Bridge Holiday", + "2017-12-31": "New Year's Eve", "2018-01-01": "New Year's Day", "2018-01-02": "Saint Berchtold's Day", + "2018-03-29": "Day before Good Friday", "2018-03-30": "Good Friday", "2018-04-02": "Easter Monday", "2018-04-16": "Sechsel\u00e4uten", "2018-05-01": "Labor Day", + "2018-05-09": "Day before Ascension Day", "2018-05-10": "Ascension Day", + "2018-05-11": "Bridge Holiday for Ascension Day", "2018-05-21": "Whit Monday", "2018-08-01": "National Day", "2018-09-08": "Knabenschiessen", "2018-09-09": "Knabenschiessen", "2018-09-10": "Knabenschiessen", + "2018-12-24": "Christmas Eve", "2018-12-25": "Christmas Day", "2018-12-26": "Saint Stephen's Day", + "2018-12-27": "Bridge Holiday", + "2018-12-28": "Bridge Holiday", + "2018-12-31": "New Year's Eve", "2019-01-01": "New Year's Day", "2019-01-02": "Saint Berchtold's Day", "2019-04-15": "Sechsel\u00e4uten", + "2019-04-18": "Day before Good Friday", "2019-04-19": "Good Friday", "2019-04-22": "Easter Monday", "2019-05-01": "Labor Day", + "2019-05-29": "Day before Ascension Day", "2019-05-30": "Ascension Day", + "2019-05-31": "Bridge Holiday for Ascension Day", "2019-06-10": "Whit Monday", "2019-08-01": "National Day", "2019-09-07": "Knabenschiessen", "2019-09-08": "Knabenschiessen", "2019-09-09": "Knabenschiessen", + "2019-12-24": "Christmas Eve", "2019-12-25": "Christmas Day", "2019-12-26": "Saint Stephen's Day", + "2019-12-27": "Bridge Holiday", + "2019-12-30": "Bridge Holiday", + "2019-12-31": "New Year's Eve", "2020-01-01": "New Year's Day", "2020-01-02": "Saint Berchtold's Day", + "2020-04-09": "Day before Good Friday", "2020-04-10": "Good Friday", "2020-04-13": "Easter Monday", "2020-04-20": "Sechsel\u00e4uten", "2020-05-01": "Labor Day", + "2020-05-20": "Day before Ascension Day", "2020-05-21": "Ascension Day", "2020-06-01": "Whit Monday", "2020-08-01": "National Day", "2020-09-12": "Knabenschiessen", "2020-09-13": "Knabenschiessen", "2020-09-14": "Knabenschiessen", + "2020-12-24": "Christmas Eve", "2020-12-25": "Christmas Day", "2020-12-26": "Saint Stephen's Day", + "2020-12-28": "Bridge Holiday", + "2020-12-29": "Bridge Holiday", + "2020-12-30": "Bridge Holiday", + "2020-12-31": "New Year's Eve", "2021-01-01": "New Year's Day", "2021-01-02": "Saint Berchtold's Day", + "2021-04-01": "Day before Good Friday", "2021-04-02": "Good Friday", "2021-04-05": "Easter Monday", "2021-04-19": "Sechsel\u00e4uten", "2021-05-01": "Labor Day", + "2021-05-12": "Day before Ascension Day", "2021-05-13": "Ascension Day", "2021-05-24": "Whit Monday", "2021-08-01": "National Day", "2021-09-11": "Knabenschiessen", "2021-09-12": "Knabenschiessen", "2021-09-13": "Knabenschiessen", + "2021-12-24": "Christmas Eve", "2021-12-25": "Christmas Day", "2021-12-26": "Saint Stephen's Day", + "2021-12-27": "Bridge Holiday", + "2021-12-28": "Bridge Holiday", + "2021-12-29": "Bridge Holiday", + "2021-12-30": "Bridge Holiday", + "2021-12-31": "New Year's Eve", "2022-01-01": "New Year's Day", "2022-01-02": "Saint Berchtold's Day", + "2022-04-14": "Day before Good Friday", "2022-04-15": "Good Friday", "2022-04-18": "Easter Monday", "2022-04-25": "Sechsel\u00e4uten", "2022-05-01": "Labor Day", + "2022-05-25": "Day before Ascension Day", "2022-05-26": "Ascension Day", "2022-06-06": "Whit Monday", "2022-08-01": "National Day", "2022-09-10": "Knabenschiessen", "2022-09-11": "Knabenschiessen", "2022-09-12": "Knabenschiessen", + "2022-12-24": "Christmas Eve", "2022-12-25": "Christmas Day", "2022-12-26": "Saint Stephen's Day", + "2022-12-27": "Bridge Holiday", + "2022-12-28": "Bridge Holiday", + "2022-12-29": "Bridge Holiday", + "2022-12-30": "Bridge Holiday", + "2022-12-31": "New Year's Eve", "2023-01-01": "New Year's Day", "2023-01-02": "Saint Berchtold's Day", + "2023-04-06": "Day before Good Friday", "2023-04-07": "Good Friday", "2023-04-10": "Easter Monday", "2023-04-17": "Sechsel\u00e4uten", "2023-05-01": "Labor Day", + "2023-05-17": "Day before Ascension Day", "2023-05-18": "Ascension Day", "2023-05-29": "Whit Monday", "2023-08-01": "National Day", "2023-09-09": "Knabenschiessen", "2023-09-10": "Knabenschiessen", "2023-09-11": "Knabenschiessen", + "2023-12-24": "Christmas Eve", "2023-12-25": "Christmas Day", "2023-12-26": "Saint Stephen's Day", + "2023-12-27": "Bridge Holiday", + "2023-12-28": "Bridge Holiday", + "2023-12-29": "Bridge Holiday", + "2023-12-31": "New Year's Eve", "2024-01-01": "New Year's Day", "2024-01-02": "Saint Berchtold's Day", + "2024-03-28": "Day before Good Friday", "2024-03-29": "Good Friday", "2024-04-01": "Easter Monday", "2024-04-15": "Sechsel\u00e4uten", "2024-05-01": "Labor Day", + "2024-05-08": "Day before Ascension Day", "2024-05-09": "Ascension Day", + "2024-05-10": "Bridge Holiday for Ascension Day", "2024-05-20": "Whit Monday", "2024-08-01": "National Day", "2024-09-07": "Knabenschiessen", "2024-09-08": "Knabenschiessen", "2024-09-09": "Knabenschiessen", + "2024-12-24": "Christmas Eve", "2024-12-25": "Christmas Day", "2024-12-26": "Saint Stephen's Day", + "2024-12-27": "Bridge Holiday", + "2024-12-30": "Bridge Holiday", + "2024-12-31": "New Year's Eve", "2025-01-01": "New Year's Day", "2025-01-02": "Saint Berchtold's Day", + "2025-04-17": "Day before Good Friday", "2025-04-18": "Good Friday", "2025-04-21": "Easter Monday", "2025-04-28": "Sechsel\u00e4uten", "2025-05-01": "Labor Day", + "2025-05-28": "Day before Ascension Day", "2025-05-29": "Ascension Day", + "2025-05-30": "Bridge Holiday for Ascension Day", "2025-06-09": "Whit Monday", "2025-08-01": "National Day", "2025-09-13": "Knabenschiessen", "2025-09-14": "Knabenschiessen", "2025-09-15": "Knabenschiessen", + "2025-12-24": "Christmas Eve", "2025-12-25": "Christmas Day", "2025-12-26": "Saint Stephen's Day", + "2025-12-29": "Bridge Holiday", + "2025-12-30": "Bridge Holiday", + "2025-12-31": "New Year's Eve", "2026-01-01": "New Year's Day", "2026-01-02": "Saint Berchtold's Day", + "2026-04-02": "Day before Good Friday", "2026-04-03": "Good Friday", "2026-04-06": "Easter Monday", "2026-04-20": "Sechsel\u00e4uten", "2026-05-01": "Labor Day", + "2026-05-13": "Day before Ascension Day", "2026-05-14": "Ascension Day", "2026-05-25": "Whit Monday", "2026-08-01": "National Day", "2026-09-12": "Knabenschiessen", "2026-09-13": "Knabenschiessen", "2026-09-14": "Knabenschiessen", + "2026-12-24": "Christmas Eve", "2026-12-25": "Christmas Day", "2026-12-26": "Saint Stephen's Day", + "2026-12-28": "Bridge Holiday", + "2026-12-29": "Bridge Holiday", + "2026-12-30": "Bridge Holiday", + "2026-12-31": "New Year's Eve", "2027-01-01": "New Year's Day", "2027-01-02": "Saint Berchtold's Day", + "2027-03-25": "Day before Good Friday", "2027-03-26": "Good Friday", "2027-03-29": "Easter Monday", "2027-04-19": "Sechsel\u00e4uten", "2027-05-01": "Labor Day", + "2027-05-05": "Day before Ascension Day", "2027-05-06": "Ascension Day", "2027-05-17": "Whit Monday", "2027-08-01": "National Day", "2027-09-11": "Knabenschiessen", "2027-09-12": "Knabenschiessen", "2027-09-13": "Knabenschiessen", + "2027-12-24": "Christmas Eve", "2027-12-25": "Christmas Day", "2027-12-26": "Saint Stephen's Day", + "2027-12-27": "Bridge Holiday", + "2027-12-28": "Bridge Holiday", + "2027-12-29": "Bridge Holiday", + "2027-12-30": "Bridge Holiday", + "2027-12-31": "New Year's Eve", "2028-01-01": "New Year's Day", "2028-01-02": "Saint Berchtold's Day", + "2028-04-13": "Day before Good Friday", "2028-04-14": "Good Friday", "2028-04-17": "Easter Monday", "2028-04-24": "Sechsel\u00e4uten", "2028-05-01": "Labor Day", + "2028-05-24": "Day before Ascension Day", "2028-05-25": "Ascension Day", "2028-06-05": "Whit Monday", "2028-08-01": "National Day", "2028-09-09": "Knabenschiessen", "2028-09-10": "Knabenschiessen", "2028-09-11": "Knabenschiessen", + "2028-12-24": "Christmas Eve", "2028-12-25": "Christmas Day", "2028-12-26": "Saint Stephen's Day", + "2028-12-27": "Bridge Holiday", + "2028-12-28": "Bridge Holiday", + "2028-12-29": "Bridge Holiday", + "2028-12-31": "New Year's Eve", "2029-01-01": "New Year's Day", "2029-01-02": "Saint Berchtold's Day", + "2029-03-29": "Day before Good Friday", "2029-03-30": "Good Friday", "2029-04-02": "Easter Monday", "2029-04-16": "Sechsel\u00e4uten", "2029-05-01": "Labor Day", + "2029-05-09": "Day before Ascension Day", "2029-05-10": "Ascension Day", + "2029-05-11": "Bridge Holiday for Ascension Day", "2029-05-21": "Whit Monday", "2029-08-01": "National Day", "2029-09-08": "Knabenschiessen", "2029-09-09": "Knabenschiessen", "2029-09-10": "Knabenschiessen", + "2029-12-24": "Christmas Eve", "2029-12-25": "Christmas Day", "2029-12-26": "Saint Stephen's Day", + "2029-12-27": "Bridge Holiday", + "2029-12-28": "Bridge Holiday", + "2029-12-31": "New Year's Eve", "2030-01-01": "New Year's Day", "2030-01-02": "Saint Berchtold's Day", "2030-04-15": "Sechsel\u00e4uten", + "2030-04-18": "Day before Good Friday", "2030-04-19": "Good Friday", "2030-04-22": "Easter Monday", "2030-05-01": "Labor Day", + "2030-05-29": "Day before Ascension Day", "2030-05-30": "Ascension Day", + "2030-05-31": "Bridge Holiday for Ascension Day", "2030-06-10": "Whit Monday", "2030-08-01": "National Day", "2030-09-07": "Knabenschiessen", "2030-09-08": "Knabenschiessen", "2030-09-09": "Knabenschiessen", + "2030-12-24": "Christmas Eve", "2030-12-25": "Christmas Day", "2030-12-26": "Saint Stephen's Day", + "2030-12-27": "Bridge Holiday", + "2030-12-30": "Bridge Holiday", + "2030-12-31": "New Year's Eve", "2031-01-01": "New Year's Day", "2031-01-02": "Saint Berchtold's Day", + "2031-04-10": "Day before Good Friday", "2031-04-11": "Good Friday", "2031-04-14": "Easter Monday", "2031-04-21": "Sechsel\u00e4uten", "2031-05-01": "Labor Day", + "2031-05-21": "Day before Ascension Day", "2031-05-22": "Ascension Day", + "2031-05-23": "Bridge Holiday for Ascension Day", "2031-06-02": "Whit Monday", "2031-08-01": "National Day", "2031-09-13": "Knabenschiessen", "2031-09-14": "Knabenschiessen", "2031-09-15": "Knabenschiessen", + "2031-12-24": "Christmas Eve", "2031-12-25": "Christmas Day", "2031-12-26": "Saint Stephen's Day", + "2031-12-29": "Bridge Holiday", + "2031-12-30": "Bridge Holiday", + "2031-12-31": "New Year's Eve", "2032-01-01": "New Year's Day", "2032-01-02": "Saint Berchtold's Day", + "2032-03-25": "Day before Good Friday", "2032-03-26": "Good Friday", "2032-03-29": "Easter Monday", "2032-04-19": "Sechsel\u00e4uten", "2032-05-01": "Labor Day", + "2032-05-05": "Day before Ascension Day", "2032-05-06": "Ascension Day", "2032-05-17": "Whit Monday", "2032-08-01": "National Day", "2032-09-11": "Knabenschiessen", "2032-09-12": "Knabenschiessen", "2032-09-13": "Knabenschiessen", + "2032-12-24": "Christmas Eve", "2032-12-25": "Christmas Day", "2032-12-26": "Saint Stephen's Day", + "2032-12-27": "Bridge Holiday", + "2032-12-28": "Bridge Holiday", + "2032-12-29": "Bridge Holiday", + "2032-12-30": "Bridge Holiday", + "2032-12-31": "New Year's Eve", "2033-01-01": "New Year's Day", "2033-01-02": "Saint Berchtold's Day", + "2033-04-14": "Day before Good Friday", "2033-04-15": "Good Friday", "2033-04-18": "Easter Monday", "2033-04-25": "Sechsel\u00e4uten", "2033-05-01": "Labor Day", + "2033-05-25": "Day before Ascension Day", "2033-05-26": "Ascension Day", "2033-06-06": "Whit Monday", "2033-08-01": "National Day", "2033-09-10": "Knabenschiessen", "2033-09-11": "Knabenschiessen", "2033-09-12": "Knabenschiessen", + "2033-12-24": "Christmas Eve", "2033-12-25": "Christmas Day", "2033-12-26": "Saint Stephen's Day", + "2033-12-27": "Bridge Holiday", + "2033-12-28": "Bridge Holiday", + "2033-12-29": "Bridge Holiday", + "2033-12-30": "Bridge Holiday", + "2033-12-31": "New Year's Eve", "2034-01-01": "New Year's Day", "2034-01-02": "Saint Berchtold's Day", + "2034-04-06": "Day before Good Friday", "2034-04-07": "Good Friday", "2034-04-10": "Easter Monday", "2034-04-17": "Sechsel\u00e4uten", "2034-05-01": "Labor Day", + "2034-05-17": "Day before Ascension Day", "2034-05-18": "Ascension Day", "2034-05-29": "Whit Monday", "2034-08-01": "National Day", "2034-09-09": "Knabenschiessen", "2034-09-10": "Knabenschiessen", "2034-09-11": "Knabenschiessen", + "2034-12-24": "Christmas Eve", "2034-12-25": "Christmas Day", "2034-12-26": "Saint Stephen's Day", + "2034-12-27": "Bridge Holiday", + "2034-12-28": "Bridge Holiday", + "2034-12-29": "Bridge Holiday", + "2034-12-31": "New Year's Eve", "2035-01-01": "New Year's Day", "2035-01-02": "Saint Berchtold's Day", + "2035-03-22": "Day before Good Friday", "2035-03-23": "Good Friday", "2035-03-26": "Easter Monday", "2035-04-16": "Sechsel\u00e4uten", "2035-05-01": "Labor Day", + "2035-05-02": "Day before Ascension Day", "2035-05-03": "Ascension Day", + "2035-05-04": "Bridge Holiday for Ascension Day", "2035-05-14": "Whit Monday", "2035-08-01": "National Day", "2035-09-08": "Knabenschiessen", "2035-09-09": "Knabenschiessen", "2035-09-10": "Knabenschiessen", + "2035-12-24": "Christmas Eve", "2035-12-25": "Christmas Day", "2035-12-26": "Saint Stephen's Day", + "2035-12-27": "Bridge Holiday", + "2035-12-28": "Bridge Holiday", + "2035-12-31": "New Year's Eve", "2036-01-01": "New Year's Day", "2036-01-02": "Saint Berchtold's Day", + "2036-04-10": "Day before Good Friday", "2036-04-11": "Good Friday", "2036-04-14": "Easter Monday", "2036-04-21": "Sechsel\u00e4uten", "2036-05-01": "Labor Day", + "2036-05-21": "Day before Ascension Day", "2036-05-22": "Ascension Day", + "2036-05-23": "Bridge Holiday for Ascension Day", "2036-06-02": "Whit Monday", "2036-08-01": "National Day", "2036-09-13": "Knabenschiessen", "2036-09-14": "Knabenschiessen", "2036-09-15": "Knabenschiessen", + "2036-12-24": "Christmas Eve", "2036-12-25": "Christmas Day", "2036-12-26": "Saint Stephen's Day", + "2036-12-29": "Bridge Holiday", + "2036-12-30": "Bridge Holiday", + "2036-12-31": "New Year's Eve", "2037-01-01": "New Year's Day", "2037-01-02": "Saint Berchtold's Day", + "2037-04-02": "Day before Good Friday", "2037-04-03": "Good Friday", "2037-04-06": "Easter Monday", "2037-04-20": "Sechsel\u00e4uten", "2037-05-01": "Labor Day", + "2037-05-13": "Day before Ascension Day", "2037-05-14": "Ascension Day", "2037-05-25": "Whit Monday", "2037-08-01": "National Day", "2037-09-12": "Knabenschiessen", "2037-09-13": "Knabenschiessen", "2037-09-14": "Knabenschiessen", + "2037-12-24": "Christmas Eve", "2037-12-25": "Christmas Day", "2037-12-26": "Saint Stephen's Day", + "2037-12-28": "Bridge Holiday", + "2037-12-29": "Bridge Holiday", + "2037-12-30": "Bridge Holiday", + "2037-12-31": "New Year's Eve", "2038-01-01": "New Year's Day", "2038-01-02": "Saint Berchtold's Day", "2038-04-19": "Sechsel\u00e4uten", + "2038-04-22": "Day before Good Friday", "2038-04-23": "Good Friday", "2038-04-26": "Easter Monday", "2038-05-01": "Labor Day", + "2038-06-02": "Day before Ascension Day", "2038-06-03": "Ascension Day", "2038-06-14": "Whit Monday", "2038-08-01": "National Day", "2038-09-11": "Knabenschiessen", "2038-09-12": "Knabenschiessen", "2038-09-13": "Knabenschiessen", + "2038-12-24": "Christmas Eve", "2038-12-25": "Christmas Day", "2038-12-26": "Saint Stephen's Day", + "2038-12-27": "Bridge Holiday", + "2038-12-28": "Bridge Holiday", + "2038-12-29": "Bridge Holiday", + "2038-12-30": "Bridge Holiday", + "2038-12-31": "New Year's Eve", "2039-01-01": "New Year's Day", "2039-01-02": "Saint Berchtold's Day", + "2039-04-07": "Day before Good Friday", "2039-04-08": "Good Friday", "2039-04-11": "Easter Monday", "2039-04-18": "Sechsel\u00e4uten", "2039-05-01": "Labor Day", + "2039-05-18": "Day before Ascension Day", "2039-05-19": "Ascension Day", "2039-05-30": "Whit Monday", "2039-08-01": "National Day", "2039-09-10": "Knabenschiessen", "2039-09-11": "Knabenschiessen", "2039-09-12": "Knabenschiessen", + "2039-12-24": "Christmas Eve", "2039-12-25": "Christmas Day", "2039-12-26": "Saint Stephen's Day", + "2039-12-27": "Bridge Holiday", + "2039-12-28": "Bridge Holiday", + "2039-12-29": "Bridge Holiday", + "2039-12-30": "Bridge Holiday", + "2039-12-31": "New Year's Eve", "2040-01-01": "New Year's Day", "2040-01-02": "Saint Berchtold's Day", + "2040-03-29": "Day before Good Friday", "2040-03-30": "Good Friday", "2040-04-02": "Easter Monday", "2040-04-16": "Sechsel\u00e4uten", "2040-05-01": "Labor Day", + "2040-05-09": "Day before Ascension Day", "2040-05-10": "Ascension Day", + "2040-05-11": "Bridge Holiday for Ascension Day", "2040-05-21": "Whit Monday", "2040-08-01": "National Day", "2040-09-08": "Knabenschiessen", "2040-09-09": "Knabenschiessen", "2040-09-10": "Knabenschiessen", + "2040-12-24": "Christmas Eve", "2040-12-25": "Christmas Day", "2040-12-26": "Saint Stephen's Day", + "2040-12-27": "Bridge Holiday", + "2040-12-28": "Bridge Holiday", + "2040-12-31": "New Year's Eve", "2041-01-01": "New Year's Day", "2041-01-02": "Saint Berchtold's Day", "2041-04-15": "Sechsel\u00e4uten", + "2041-04-18": "Day before Good Friday", "2041-04-19": "Good Friday", "2041-04-22": "Easter Monday", "2041-05-01": "Labor Day", + "2041-05-29": "Day before Ascension Day", "2041-05-30": "Ascension Day", + "2041-05-31": "Bridge Holiday for Ascension Day", "2041-06-10": "Whit Monday", "2041-08-01": "National Day", "2041-09-07": "Knabenschiessen", "2041-09-08": "Knabenschiessen", "2041-09-09": "Knabenschiessen", + "2041-12-24": "Christmas Eve", "2041-12-25": "Christmas Day", "2041-12-26": "Saint Stephen's Day", + "2041-12-27": "Bridge Holiday", + "2041-12-30": "Bridge Holiday", + "2041-12-31": "New Year's Eve", "2042-01-01": "New Year's Day", "2042-01-02": "Saint Berchtold's Day", + "2042-04-03": "Day before Good Friday", "2042-04-04": "Good Friday", "2042-04-07": "Easter Monday", "2042-04-21": "Sechsel\u00e4uten", "2042-05-01": "Labor Day", + "2042-05-14": "Day before Ascension Day", "2042-05-15": "Ascension Day", + "2042-05-16": "Bridge Holiday for Ascension Day", "2042-05-26": "Whit Monday", "2042-08-01": "National Day", "2042-09-13": "Knabenschiessen", "2042-09-14": "Knabenschiessen", "2042-09-15": "Knabenschiessen", + "2042-12-24": "Christmas Eve", "2042-12-25": "Christmas Day", "2042-12-26": "Saint Stephen's Day", + "2042-12-29": "Bridge Holiday", + "2042-12-30": "Bridge Holiday", + "2042-12-31": "New Year's Eve", "2043-01-01": "New Year's Day", "2043-01-02": "Saint Berchtold's Day", + "2043-03-26": "Day before Good Friday", "2043-03-27": "Good Friday", "2043-03-30": "Easter Monday", "2043-04-20": "Sechsel\u00e4uten", "2043-05-01": "Labor Day", + "2043-05-06": "Day before Ascension Day", "2043-05-07": "Ascension Day", "2043-05-18": "Whit Monday", "2043-08-01": "National Day", "2043-09-12": "Knabenschiessen", "2043-09-13": "Knabenschiessen", "2043-09-14": "Knabenschiessen", + "2043-12-24": "Christmas Eve", "2043-12-25": "Christmas Day", "2043-12-26": "Saint Stephen's Day", + "2043-12-28": "Bridge Holiday", + "2043-12-29": "Bridge Holiday", + "2043-12-30": "Bridge Holiday", + "2043-12-31": "New Year's Eve", "2044-01-01": "New Year's Day", "2044-01-02": "Saint Berchtold's Day", + "2044-04-14": "Day before Good Friday", "2044-04-15": "Good Friday", "2044-04-18": "Easter Monday", "2044-04-25": "Sechsel\u00e4uten", "2044-05-01": "Labor Day", + "2044-05-25": "Day before Ascension Day", "2044-05-26": "Ascension Day", "2044-06-06": "Whit Monday", "2044-08-01": "National Day", "2044-09-10": "Knabenschiessen", "2044-09-11": "Knabenschiessen", "2044-09-12": "Knabenschiessen", + "2044-12-24": "Christmas Eve", "2044-12-25": "Christmas Day", "2044-12-26": "Saint Stephen's Day", + "2044-12-27": "Bridge Holiday", + "2044-12-28": "Bridge Holiday", + "2044-12-29": "Bridge Holiday", + "2044-12-30": "Bridge Holiday", + "2044-12-31": "New Year's Eve", "2045-01-01": "New Year's Day", "2045-01-02": "Saint Berchtold's Day", + "2045-04-06": "Day before Good Friday", "2045-04-07": "Good Friday", "2045-04-10": "Easter Monday", "2045-04-17": "Sechsel\u00e4uten", "2045-05-01": "Labor Day", + "2045-05-17": "Day before Ascension Day", "2045-05-18": "Ascension Day", "2045-05-29": "Whit Monday", "2045-08-01": "National Day", "2045-09-09": "Knabenschiessen", "2045-09-10": "Knabenschiessen", "2045-09-11": "Knabenschiessen", + "2045-12-24": "Christmas Eve", "2045-12-25": "Christmas Day", "2045-12-26": "Saint Stephen's Day", + "2045-12-27": "Bridge Holiday", + "2045-12-28": "Bridge Holiday", + "2045-12-29": "Bridge Holiday", + "2045-12-31": "New Year's Eve", "2046-01-01": "New Year's Day", "2046-01-02": "Saint Berchtold's Day", + "2046-03-22": "Day before Good Friday", "2046-03-23": "Good Friday", "2046-03-26": "Easter Monday", "2046-04-16": "Sechsel\u00e4uten", "2046-05-01": "Labor Day", + "2046-05-02": "Day before Ascension Day", "2046-05-03": "Ascension Day", + "2046-05-04": "Bridge Holiday for Ascension Day", "2046-05-14": "Whit Monday", "2046-08-01": "National Day", "2046-09-08": "Knabenschiessen", "2046-09-09": "Knabenschiessen", "2046-09-10": "Knabenschiessen", + "2046-12-24": "Christmas Eve", "2046-12-25": "Christmas Day", "2046-12-26": "Saint Stephen's Day", + "2046-12-27": "Bridge Holiday", + "2046-12-28": "Bridge Holiday", + "2046-12-31": "New Year's Eve", "2047-01-01": "New Year's Day", "2047-01-02": "Saint Berchtold's Day", + "2047-04-11": "Day before Good Friday", "2047-04-12": "Good Friday", "2047-04-15": "Easter Monday", "2047-04-22": "Sechsel\u00e4uten", "2047-05-01": "Labor Day", + "2047-05-22": "Day before Ascension Day", "2047-05-23": "Ascension Day", + "2047-05-24": "Bridge Holiday for Ascension Day", "2047-06-03": "Whit Monday", "2047-08-01": "National Day", "2047-09-07": "Knabenschiessen", "2047-09-08": "Knabenschiessen", "2047-09-09": "Knabenschiessen", + "2047-12-24": "Christmas Eve", "2047-12-25": "Christmas Day", "2047-12-26": "Saint Stephen's Day", + "2047-12-27": "Bridge Holiday", + "2047-12-30": "Bridge Holiday", + "2047-12-31": "New Year's Eve", "2048-01-01": "New Year's Day", "2048-01-02": "Saint Berchtold's Day", + "2048-04-02": "Day before Good Friday", "2048-04-03": "Good Friday", "2048-04-06": "Easter Monday", "2048-04-20": "Sechsel\u00e4uten", "2048-05-01": "Labor Day", + "2048-05-13": "Day before Ascension Day", "2048-05-14": "Ascension Day", "2048-05-25": "Whit Monday", "2048-08-01": "National Day", "2048-09-12": "Knabenschiessen", "2048-09-13": "Knabenschiessen", "2048-09-14": "Knabenschiessen", + "2048-12-24": "Christmas Eve", "2048-12-25": "Christmas Day", "2048-12-26": "Saint Stephen's Day", + "2048-12-28": "Bridge Holiday", + "2048-12-29": "Bridge Holiday", + "2048-12-30": "Bridge Holiday", + "2048-12-31": "New Year's Eve", "2049-01-01": "New Year's Day", "2049-01-02": "Saint Berchtold's Day", + "2049-04-15": "Day before Good Friday", "2049-04-16": "Good Friday", "2049-04-19": "Easter Monday", "2049-04-26": "Sechsel\u00e4uten", "2049-05-01": "Labor Day", + "2049-05-26": "Day before Ascension Day", "2049-05-27": "Ascension Day", "2049-06-07": "Whit Monday", "2049-08-01": "National Day", "2049-09-11": "Knabenschiessen", "2049-09-12": "Knabenschiessen", "2049-09-13": "Knabenschiessen", + "2049-12-24": "Christmas Eve", "2049-12-25": "Christmas Day", "2049-12-26": "Saint Stephen's Day", + "2049-12-27": "Bridge Holiday", + "2049-12-28": "Bridge Holiday", + "2049-12-29": "Bridge Holiday", + "2049-12-30": "Bridge Holiday", + "2049-12-31": "New Year's Eve", "2050-01-01": "New Year's Day", "2050-01-02": "Saint Berchtold's Day", + "2050-04-07": "Day before Good Friday", "2050-04-08": "Good Friday", "2050-04-11": "Easter Monday", "2050-04-18": "Sechsel\u00e4uten", "2050-05-01": "Labor Day", + "2050-05-18": "Day before Ascension Day", "2050-05-19": "Ascension Day", "2050-05-30": "Whit Monday", "2050-08-01": "National Day", "2050-09-10": "Knabenschiessen", "2050-09-11": "Knabenschiessen", "2050-09-12": "Knabenschiessen", + "2050-12-24": "Christmas Eve", "2050-12-25": "Christmas Day", - "2050-12-26": "Saint Stephen's Day" + "2050-12-26": "Saint Stephen's Day", + "2050-12-27": "Bridge Holiday", + "2050-12-28": "Bridge Holiday", + "2050-12-29": "Bridge Holiday", + "2050-12-30": "Bridge Holiday", + "2050-12-31": "New Year's Eve" } diff --git a/tests/countries/test_switzerland.py b/tests/countries/test_switzerland.py index a8b6c8a007..8f0f28b089 100644 --- a/tests/countries/test_switzerland.py +++ b/tests/countries/test_switzerland.py @@ -20,18 +20,25 @@ class TestSwitzerland(CommonCountryTests, TestCase): @classmethod def setUpClass(cls): - years = range(1970, 2050) - super().setUpClass(Switzerland, years=years) + cls.full_range = range(1970, 2050) + super().setUpClass(Switzerland, years=cls.full_range) cls.subdiv_holidays = { - subdiv: Switzerland(subdiv=subdiv, years=years) for subdiv in CH.subdivisions + subdiv: Switzerland(subdiv=subdiv, years=cls.full_range) + for subdiv in Switzerland.subdivisions } cls.subdiv_half_day_holidays = { - subdiv: Switzerland(categories=HALF_DAY, subdiv=subdiv, years=years) - for subdiv in CH.subdivisions + subdiv: Switzerland(categories=HALF_DAY, subdiv=subdiv, years=cls.full_range) + for subdiv in Switzerland.subdivisions } cls.subdiv_optional_holidays = { - subdiv: Switzerland(categories=OPTIONAL, subdiv=subdiv, years=years) - for subdiv in CH.subdivisions + subdiv: Switzerland(categories=OPTIONAL, subdiv=subdiv, years=cls.full_range) + for subdiv in Switzerland.subdivisions + } + cls.subdiv_optional_holidays_non_observed = { + subdiv: Switzerland( + categories=OPTIONAL, observed=False, subdiv=subdiv, years=cls.full_range + ) + for subdiv in Switzerland.subdivisions } def test_country_aliases(self): @@ -39,7 +46,7 @@ def test_country_aliases(self): def test_all_holidays_present(self): y_2018 = set() - for p in CH.subdivisions: + for p in Switzerland.subdivisions: y_2018.update( Switzerland(categories=(HALF_DAY, OPTIONAL, PUBLIC), years=2018, subdiv=p).values() ) @@ -50,11 +57,14 @@ def test_all_holidays_present(self): "Jahrestag der Ausrufung der Republik", "Josefstag", "Näfelser Fahrt", + "Vortag vor Karfreitag", "Karfreitag", "Ostermontag", "Sechseläuten", "Tag der Arbeit", + "Vortag vor Auffahrt", "Auffahrt", + "Brückentag nach Auffahrt", "Pfingstmontag", "Fronleichnam", "Fest der Unabhängigkeit", @@ -67,8 +77,11 @@ def test_all_holidays_present(self): "Allerheiligen", "Mariä Empfängnis", "Genfer Bettag", + "Heiligabend", "Weihnachten", "Stephanstag", + "Brückentag", + "Vortag vor Neujahr", "Wiederherstellung der Republik", } @@ -80,11 +93,11 @@ def test_all_holidays_present(self): def test_fixed_holidays(self): # New Year's Day. - self.assertHolidayName("Neujahrstag", (f"{year}-01-01" for year in range(1970, 2050))) + self.assertHolidayName("Neujahrstag", (f"{year}-01-01" for year in self.full_range)) # National Day. - self.assertHolidayName("Nationalfeiertag", (f"{year}-08-01" for year in range(1970, 2050))) + self.assertHolidayName("Nationalfeiertag", (f"{year}-08-01" for year in self.full_range)) # Christmas Day. - self.assertHolidayName("Weihnachten", (f"{year}-12-25" for year in range(1970, 2050))) + self.assertHolidayName("Weihnachten", (f"{year}-12-25" for year in self.full_range)) def test_berchtolds_day(self): name = "Berchtoldstag" @@ -96,19 +109,19 @@ def test_berchtolds_day(self): for subdiv, holidays in self.subdiv_holidays.items(): if subdiv in subdivs_that_have: self.assertHolidayName( - name, holidays, (f"{year}-01-02" for year in range(1970, 2050)) + name, holidays, (f"{year}-01-02" for year in self.full_range) ) elif subdiv != "NE": - self.assertNoHoliday(holidays, (f"{year}-01-02" for year in range(1970, 2050))) + self.assertNoHoliday(holidays, (f"{year}-01-02" for year in self.full_range)) self.assertNoHolidayName(name, holidays) for subdiv, holidays in self.subdiv_optional_holidays.items(): if subdiv in subdivs_optional: self.assertHolidayName( - name, holidays, (f"{year}-01-02" for year in range(1970, 2050)) + name, holidays, (f"{year}-01-02" for year in self.full_range) ) else: - self.assertNoHoliday(holidays, (f"{year}-01-02" for year in range(1970, 2050))) + self.assertNoHoliday(holidays, (f"{year}-01-02" for year in self.full_range)) self.assertNoHolidayName(name, holidays) # When holiday present in NE. @@ -118,7 +131,7 @@ def test_berchtolds_day(self): ) self.assertNoHoliday( self.subdiv_holidays["NE"], - (f"{year}-01-02" for year in set(range(1970, 2050)).difference(ne_years)), + (f"{year}-01-02" for year in set(self.full_range).difference(ne_years)), ) def test_epiphany(self): @@ -130,10 +143,10 @@ def test_epiphany(self): for subdiv, holidays in self.subdiv_holidays.items(): if subdiv in subdivs_that_have: self.assertHolidayName( - name, holidays, (f"{year}-01-06" for year in range(1970, 2050)) + name, holidays, (f"{year}-01-06" for year in self.full_range) ) else: - self.assertNoHoliday(holidays, (f"{year}-01-06" for year in range(1970, 2050))) + self.assertNoHoliday(holidays, (f"{year}-01-06" for year in self.full_range)) self.assertNoHolidayName(name, holidays) def test_republic_day(self): @@ -144,10 +157,10 @@ def test_republic_day(self): for subdiv, holidays in self.subdiv_holidays.items(): if subdiv == "NE": self.assertHolidayName( - name, holidays, (f"{year}-03-01" for year in range(1970, 2050)) + name, holidays, (f"{year}-03-01" for year in self.full_range) ) else: - self.assertNoHoliday(holidays, (f"{year}-03-01" for year in range(1970, 2050))) + self.assertNoHoliday(holidays, (f"{year}-03-01" for year in self.full_range)) self.assertNoHolidayName(name, holidays) def test_st_josephs_day(self): @@ -159,10 +172,10 @@ def test_st_josephs_day(self): for subdiv, holidays in self.subdiv_holidays.items(): if subdiv in subdivs_that_have: self.assertHolidayName( - name, holidays, (f"{year}-03-19" for year in range(1970, 2050)) + name, holidays, (f"{year}-03-19" for year in self.full_range) ) else: - self.assertNoHoliday(holidays, (f"{year}-03-19" for year in range(1970, 2050))) + self.assertNoHoliday(holidays, (f"{year}-03-19" for year in self.full_range)) self.assertNoHolidayName(name, holidays) def test_nafels_ride(self): @@ -223,7 +236,7 @@ def test_good_friday(self): ) subdivs_that_dont = {"TI", "VS"} subdivs_optional = {"GR"} - subdivs_that_have = set(CH.subdivisions) - subdivs_that_dont - subdivs_optional + subdivs_that_have = set(Switzerland.subdivisions) - subdivs_that_dont - subdivs_optional self.assertNoHolidayName(name) @@ -265,7 +278,7 @@ def test_easter_monday(self): ) subdivs_that_dont = {"NE", "SO"} subdivs_optional = {"FR", "NW", "OW", "VS", "ZG"} - subdivs_that_have = set(CH.subdivisions) - subdivs_that_dont - subdivs_optional + subdivs_that_have = set(Switzerland.subdivisions) - subdivs_that_dont - subdivs_optional self.assertNoHolidayName(name) @@ -292,22 +305,22 @@ def test_labor_day(self): for subdiv, holidays in self.subdiv_holidays.items(): if subdiv in subdivs_that_have: self.assertHolidayName( - name, holidays, (f"{year}-05-01" for year in range(1970, 2050)) + name, holidays, (f"{year}-05-01" for year in self.full_range) ) else: self.assertNoHolidayName( - name, holidays, (f"{year}-05-01" for year in range(1970, 2050)) + name, holidays, (f"{year}-05-01" for year in self.full_range) ) self.assertNoHolidayName(name, holidays) for subdiv, holidays in self.subdiv_half_day_holidays.items(): if subdiv == "SO": self.assertHolidayName( - name, holidays, (f"{year}-05-01" for year in range(1970, 2050)) + name, holidays, (f"{year}-05-01" for year in self.full_range) ) else: self.assertNoHolidayName( - name, holidays, (f"{year}-05-01" for year in range(1970, 2050)) + name, holidays, (f"{year}-05-01" for year in self.full_range) ) self.assertNoHolidayName(name, holidays) @@ -335,7 +348,7 @@ def test_ascension_day(self): ) self.assertHolidayName(name, known_good) - self.assertHolidayName(name, range(1970, 2050)) + self.assertHolidayName(name, self.full_range) for holidays in self.subdiv_holidays.values(): self.assertHolidayName(name, holidays, known_good) @@ -364,7 +377,7 @@ def test_whit_monday(self): subdivs_that_dont = {"NE", "SO"} subdivs_optional = {"FR", "NW", "OW", "VS", "ZG"} - subdivs_that_have = set(CH.subdivisions) - subdivs_that_dont - subdivs_optional + subdivs_that_have = set(Switzerland.subdivisions) - subdivs_that_dont - subdivs_optional self.assertNoHolidayName(name) @@ -429,11 +442,11 @@ def test_independence_day(self): for subdiv, holidays in self.subdiv_holidays.items(): if subdiv == "JU": self.assertHolidayName( - name, holidays, (f"{year}-06-23" for year in range(1970, 2050)) + name, holidays, (f"{year}-06-23" for year in self.full_range) ) else: self.assertNoHolidayName( - name, holidays, (f"{year}-06-23" for year in range(1970, 2050)) + name, holidays, (f"{year}-06-23" for year in self.full_range) ) self.assertNoHolidayName(name, holidays) @@ -445,10 +458,10 @@ def test_saints_peter_and_paul(self): for subdiv, holidays in self.subdiv_holidays.items(): if subdiv == "TI": self.assertHolidayName( - name, holidays, (f"{year}-06-29" for year in range(1970, 2050)) + name, holidays, (f"{year}-06-29" for year in self.full_range) ) else: - self.assertNoHoliday(holidays, (f"{year}-06-29" for year in range(1970, 2050))) + self.assertNoHoliday(holidays, (f"{year}-06-29" for year in self.full_range)) self.assertNoHolidayName(name, holidays) def test_assumption_day(self): @@ -460,10 +473,10 @@ def test_assumption_day(self): for subdiv, holidays in self.subdiv_holidays.items(): if subdiv in subdivs_that_have: self.assertHolidayName( - name, holidays, (f"{year}-08-15" for year in range(1970, 2050)) + name, holidays, (f"{year}-08-15" for year in self.full_range) ) else: - self.assertNoHoliday(holidays, (f"{year}-08-15" for year in range(1970, 2050))) + self.assertNoHoliday(holidays, (f"{year}-08-15" for year in self.full_range)) self.assertNoHolidayName(name, holidays) def test_prayer_monday(self): @@ -499,10 +512,10 @@ def test_saint_nicholas(self): for subdiv, holidays in self.subdiv_holidays.items(): if subdiv == "OW": self.assertHolidayName( - name, holidays, (f"{year}-09-25" for year in range(1970, 2050)) + name, holidays, (f"{year}-09-25" for year in self.full_range) ) else: - self.assertNoHoliday(holidays, (f"{year}-09-25" for year in range(1970, 2050))) + self.assertNoHoliday(holidays, (f"{year}-09-25" for year in self.full_range)) self.assertNoHolidayName(name, holidays) def test_all_saints_day(self): @@ -528,10 +541,10 @@ def test_all_saints_day(self): for subdiv, holidays in self.subdiv_holidays.items(): if subdiv in subdivs_that_have: self.assertHolidayName( - name, holidays, (f"{year}-11-01" for year in range(1970, 2050)) + name, holidays, (f"{year}-11-01" for year in self.full_range) ) else: - self.assertNoHoliday(holidays, (f"{year}-11-01" for year in range(1970, 2050))) + self.assertNoHoliday(holidays, (f"{year}-11-01" for year in self.full_range)) self.assertNoHolidayName(name, holidays) def test_genevan_fast(self): @@ -569,10 +582,10 @@ def test_immaculate_conception(self): for subdiv, holidays in self.subdiv_holidays.items(): if subdiv in subdivs_that_have: self.assertHolidayName( - name, holidays, (f"{year}-12-08" for year in range(1970, 2050)) + name, holidays, (f"{year}-12-08" for year in self.full_range) ) else: - self.assertNoHoliday(holidays, (f"{year}-12-08" for year in range(1970, 2050))) + self.assertNoHoliday(holidays, (f"{year}-12-08" for year in self.full_range)) self.assertNoHolidayName(name, holidays) def test_saint_stephens_day(self): @@ -594,7 +607,10 @@ def test_saint_stephens_day(self): } subdivs_optional = {"FR", "NW", "OW", "VS", "ZG"} subdivs_that_dont = ( - set(CH.subdivisions) - subdivs_that_have - subdivs_optional - {"AI", "AR", "NE", "UR"} + set(Switzerland.subdivisions) + - subdivs_that_have + - subdivs_optional + - {"AI", "AR", "NE", "UR"} ) self.assertNoHolidayName(name) @@ -602,19 +618,19 @@ def test_saint_stephens_day(self): for subdiv, holidays in self.subdiv_holidays.items(): if subdiv in subdivs_that_have: self.assertHolidayName( - name, holidays, (f"{year}-12-26" for year in range(1970, 2050)) + name, holidays, (f"{year}-12-26" for year in self.full_range) ) elif subdiv in subdivs_that_dont: - self.assertNoHoliday(holidays, (f"{year}-12-26" for year in range(1970, 2050))) + self.assertNoHoliday(holidays, (f"{year}-12-26" for year in self.full_range)) self.assertNoHolidayName(name, holidays) for subdiv, holidays in self.subdiv_optional_holidays.items(): if subdiv in subdivs_optional: self.assertHolidayName( - name, holidays, (f"{year}-12-26" for year in range(1970, 2050)) + name, holidays, (f"{year}-12-26" for year in self.full_range) ) else: - self.assertNoHoliday(holidays, (f"{year}-12-26" for year in range(1970, 2050))) + self.assertNoHoliday(holidays, (f"{year}-12-26" for year in self.full_range)) self.assertNoHolidayName(name, holidays) # When holiday present in NE. @@ -624,7 +640,7 @@ def test_saint_stephens_day(self): ) self.assertNoHoliday( self.subdiv_holidays["NE"], - (f"{year}-12-26" for year in set(range(1970, 2050)).difference(ne_years_have)), + (f"{year}-12-26" for year in set(self.full_range).difference(ne_years_have)), ) # When holiday not present in AI, AR, UR. @@ -657,7 +673,7 @@ def test_saint_stephens_day(self): self.assertHolidayName( name, self.subdiv_holidays[subdiv], - set(range(1970, 2050)).difference(ai_ar_ur_years_dont), + set(self.full_range).difference(ai_ar_ur_years_dont), ) self.assertNoHoliday( self.subdiv_holidays[subdiv], @@ -672,10 +688,10 @@ def test_restoration_day(self): for subdiv, holidays in self.subdiv_holidays.items(): if subdiv == "GE": self.assertHolidayName( - name, holidays, (f"{year}-12-31" for year in range(1970, 2050)) + name, holidays, (f"{year}-12-31" for year in self.full_range) ) else: - self.assertNoHoliday(holidays, (f"{year}-12-31" for year in range(1970, 2050))) + self.assertNoHoliday(holidays, (f"{year}-12-31" for year in self.full_range)) self.assertNoHolidayName(name, holidays) def test_knabenschiessen(self): @@ -701,7 +717,7 @@ def test_knabenschiessen(self): "2025-09-13", "2025-09-14", ) - self.assertHolidayNameCount(name, 2, holidays, range(1970, 2050)) + self.assertHolidayNameCount(name, 2, holidays, self.full_range) else: self.assertNoHolidayName(name, holidays) @@ -717,19 +733,69 @@ def test_knabenschiessen(self): "2024-09-09", "2025-09-15", ) - self.assertHolidayName(name, holidays, range(1970, 2050)) + self.assertHolidayName(name, holidays, self.full_range) + else: + self.assertNoHolidayName(name, holidays) + + for subdiv, holidays in self.subdiv_optional_holidays.items(): + if subdiv == "ZH": + self.assertHolidayName( + name, + holidays, + "2020-09-14", + "2023-09-11", + "2024-09-09", + "2025-09-15", + ) + self.assertNoHolidayName( + name, + holidays, + # Not in years where 4 bridge holidays are given out for Christmas-New Year. + "2016-09-12", + "2021-09-13", + "2022-09-12", + "2027-09-13", + ) else: self.assertNoHolidayName(name, holidays) self.assertNoHolidayName(name, Switzerland(subdiv="ZH", years=1898)) self.assertNoHolidayName(name, Switzerland(categories=HALF_DAY, subdiv="ZH", years=1898)) + self.assertNoHolidayName(name, Switzerland(categories=OPTIONAL, subdiv="ZH", years=1898)) + + def test_day_before_good_friday(self): + name = "Vortag vor Karfreitag" + + self.assertNoHolidayName(name) + + for subdiv, holidays in { + **self.subdiv_half_day_holidays, + **self.subdiv_optional_holidays, + }.items(): + if subdiv == "ZH": + self.assertHolidayName( + name, + holidays, + "2020-04-09", + "2021-04-01", + "2022-04-14", + "2023-04-06", + "2024-03-28", + "2025-04-17", + ) + self.assertHolidayName(name, holidays, self.full_range) + else: + self.assertNoHolidayName(name, holidays) def test_sechselauten(self): name = "Sechseläuten" self.assertNoHolidayName(name) - for subdiv, holidays in self.subdiv_half_day_holidays.items(): + for subdiv, holidays in { + **self.subdiv_half_day_holidays, + **self.subdiv_optional_holidays, + }.items(): if subdiv == "ZH": self.assertHolidayName( name, @@ -741,7 +807,7 @@ def test_sechselauten(self): "2024-04-15", "2025-04-28", ) - self.assertHolidayName(name, holidays, range(1970, 2050)) + self.assertHolidayName(name, holidays, self.full_range) else: self.assertNoHolidayName(name, holidays) @@ -763,6 +829,118 @@ def test_sechselauten(self): self.assertHolidayName(name, subdiv_zh_half_day_holidays, range(1902, 1970)) self.assertNoHolidayName(name, subdiv_zh_half_day_holidays, 1901) + subdiv_zh_optional_holidays = Switzerland( + categories=OPTIONAL, subdiv="ZH", years=range(1901, 1970) + ) + + self.assertHolidayName( + name, + subdiv_zh_optional_holidays, + "1902-03-24", + "1903-03-23", + "1904-03-21", + "1949-03-21", + "1950-03-27", + "1951-03-26", + "1952-04-21", + ) + self.assertHolidayName(name, subdiv_zh_optional_holidays, range(1902, 1970)) + self.assertNoHolidayName(name, subdiv_zh_optional_holidays, 1901) + + def test_day_before_ascension_day(self): + name = "Vortag vor Auffahrt" + + self.assertNoHolidayName(name) + + for subdiv, holidays in self.subdiv_half_day_holidays.items(): + if subdiv == "ZH": + self.assertHolidayName( + name, + holidays, + "2020-05-20", + "2021-05-12", + "2022-05-25", + "2023-05-17", + "2024-05-08", + "2025-05-28", + ) + self.assertHolidayName(name, holidays, self.full_range) + else: + self.assertNoHolidayName(name, holidays) + + def test_bridge_holiday_for_ascension_day(self): + name = "Brückentag nach Auffahrt" + + for subdiv, holidays in self.subdiv_optional_holidays.items(): + if subdiv == "ZH": + self.assertHolidayName( + name, + holidays, + "2018-05-11", + "2019-05-31", + "2024-05-10", + "2025-05-30", + ) + else: + self.assertNoHolidayName(name, holidays) + + def test_christmas_eve(self): + name = "Heiligabend" + + self.assertNoHolidayName(name) + + for subdiv, holidays in { + **self.subdiv_half_day_holidays, + **self.subdiv_optional_holidays, + }.items(): + if subdiv == "ZH": + self.assertHolidayName( + name, holidays, (f"{year}-12-24" for year in self.full_range) + ) + else: + self.assertNoHolidayName(name, holidays) + + def test_bridge_holidays(self): + name = "Brückentag" + + self.assertNoHolidayName(name) + + for subdiv, holidays in self.subdiv_optional_holidays_non_observed.items(): + if subdiv == "ZH": + self.assertNonObservedHolidayName( + name, + holidays, + (f"{year}-12-27" for year in self.full_range), + (f"{year}-12-28" for year in self.full_range), + (f"{year}-12-29" for year in self.full_range), + (f"{year}-12-30" for year in self.full_range), + ) + else: + self.assertNoNonObservedHolidayName(name, holidays) + + self.assertNoHoliday( + self.subdiv_optional_holidays["ZH"], + "2025-12-27", + "2025-12-28", + "2026-12-27", + ) + + def test_new_years_eve(self): + name = "Vortag vor Neujahr" + + self.assertNoHolidayName(name) + + for subdiv, holidays in { + **self.subdiv_half_day_holidays, + **self.subdiv_optional_holidays, + }.items(): + if subdiv == "ZH": + self.assertHolidayName( + name, holidays, (f"{year}-12-31" for year in self.full_range) + ) + else: + self.assertNoHolidayName(name, holidays) + def test_l10n_default(self): self.assertLocalizedHolidays( ("2023-01-01", "Neujahrstag"), @@ -770,11 +948,13 @@ def test_l10n_default(self): ("2023-01-06", "Heilige Drei Könige"), ("2023-03-01", "Jahrestag der Ausrufung der Republik"), ("2023-03-19", "Josefstag"), + ("2023-04-06", "Vortag vor Karfreitag"), ("2023-04-07", "Karfreitag"), ("2023-04-10", "Ostermontag"), ("2023-04-13", "Näfelser Fahrt"), ("2023-04-17", "Sechseläuten"), ("2023-05-01", "Tag der Arbeit"), + ("2023-05-17", "Vortag vor Auffahrt"), ("2023-05-18", "Auffahrt"), ("2023-05-29", "Pfingstmontag"), ("2023-06-08", "Fronleichnam"), @@ -790,9 +970,13 @@ def test_l10n_default(self): ("2023-09-25", "Bruder Klaus"), ("2023-11-01", "Allerheiligen"), ("2023-12-08", "Mariä Empfängnis"), + ("2023-12-24", "Heiligabend"), ("2023-12-25", "Weihnachten"), ("2023-12-26", "Stephanstag"), - ("2023-12-31", "Wiederherstellung der Republik"), + ("2023-12-27", "Brückentag"), + ("2023-12-28", "Brückentag"), + ("2023-12-29", "Brückentag"), + ("2023-12-31", "Vortag vor Neujahr; Wiederherstellung der Republik"), ) def test_l10n_en_us(self): @@ -803,11 +987,13 @@ def test_l10n_en_us(self): ("2023-01-06", "Epiphany"), ("2023-03-01", "Republic Day"), ("2023-03-19", "Saint Joseph's Day"), + ("2023-04-06", "Day before Good Friday"), ("2023-04-07", "Good Friday"), ("2023-04-10", "Easter Monday"), ("2023-04-13", "Battle of Naefels Victory Day"), ("2023-04-17", "Sechseläuten"), ("2023-05-01", "Labor Day"), + ("2023-05-17", "Day before Ascension Day"), ("2023-05-18", "Ascension Day"), ("2023-05-29", "Whit Monday"), ("2023-06-08", "Corpus Christi"), @@ -823,9 +1009,13 @@ def test_l10n_en_us(self): ("2023-09-25", "Saint Nicholas of Flüe"), ("2023-11-01", "All Saints' Day"), ("2023-12-08", "Immaculate Conception"), + ("2023-12-24", "Christmas Eve"), ("2023-12-25", "Christmas Day"), ("2023-12-26", "Saint Stephen's Day"), - ("2023-12-31", "Restoration Day"), + ("2023-12-27", "Bridge Holiday"), + ("2023-12-28", "Bridge Holiday"), + ("2023-12-29", "Bridge Holiday"), + ("2023-12-31", "New Year's Eve; Restoration Day"), ) def test_l10n_fr(self): @@ -836,11 +1026,13 @@ def test_l10n_fr(self): ("2023-01-06", "Épiphanie"), ("2023-03-01", "Instauration de la République"), ("2023-03-19", "Saint-Joseph"), + ("2023-04-06", "Veille du Vendredi saint"), ("2023-04-07", "Vendredi saint"), ("2023-04-10", "Lundi de Pâques"), ("2023-04-13", "Fahrtsfest"), ("2023-04-17", "Sechseläuten"), ("2023-05-01", "Fête du Travail"), + ("2023-05-17", "Veille de l'Ascension"), ("2023-05-18", "Ascension"), ("2023-05-29", "Lundi de Pentecôte"), ("2023-06-08", "Fête-Dieu"), @@ -856,9 +1048,13 @@ def test_l10n_fr(self): ("2023-09-25", "Fête de Saint-Nicolas-de-Flüe"), ("2023-11-01", "Toussaint"), ("2023-12-08", "Immaculée Conception"), + ("2023-12-24", "Veille de Noël"), ("2023-12-25", "Noël"), ("2023-12-26", "Saint-Étienne"), - ("2023-12-31", "Restauration de la République"), + ("2023-12-27", "Jour pont"), + ("2023-12-28", "Jour pont"), + ("2023-12-29", "Jour pont"), + ("2023-12-31", "Restauration de la République; Réveillon du Nouvel An"), ) def test_l10n_it(self): @@ -869,11 +1065,13 @@ def test_l10n_it(self): ("2023-01-06", "Epifania"), ("2023-03-01", "Giorno della Repubblica"), ("2023-03-19", "San Giuseppe"), + ("2023-04-06", "Vigilia del Venerdì Santo"), ("2023-04-07", "Venerdì Santo"), ("2023-04-10", "Lunedì dell'Angelo"), ("2023-04-13", "Battaglia di Näfels"), ("2023-04-17", "Sechseläuten"), ("2023-05-01", "Festa del lavoro"), + ("2023-05-17", "Vigilia dell'Ascensione di Gesù"), ("2023-05-18", "Ascensione di Gesù"), ("2023-05-29", "Lunedì di Pentecoste"), ("2023-06-08", "Corpus Domini"), @@ -881,17 +1079,21 @@ def test_l10n_it(self): ("2023-06-29", "Santi Pietro e Paolo"), ("2023-08-01", "Festa nazionale"), ("2023-08-15", "Assunzione di Maria"), - ("2023-09-07", "Jeûne genevois"), + ("2023-09-07", "Digiuno ginevrino"), ("2023-09-09", "Knabenschiessen"), ("2023-09-10", "Knabenschiessen"), ("2023-09-11", "Knabenschiessen"), - ("2023-09-18", "Digiuno Ginevrino"), - ("2023-09-25", "Nicolao della Flüe"), + ("2023-09-18", "Lunedì del digiuno federal"), + ("2023-09-25", "San Nicolao della Flue"), ("2023-11-01", "Ognissanti"), ("2023-12-08", "Immacolata Concezione"), + ("2023-12-24", "Vigilia di Natale"), ("2023-12-25", "Natale"), ("2023-12-26", "Giorno di Santo Stefano"), - ("2023-12-31", "Restauration genevoise"), + ("2023-12-27", "Giorno ponte"), + ("2023-12-28", "Giorno ponte"), + ("2023-12-29", "Giorno ponte"), + ("2023-12-31", "Restaurazione della Repubblica; Vigilia di Capodanno"), ) def test_l10n_th(self): @@ -902,11 +1104,13 @@ def test_l10n_th(self): ("2023-01-06", "วันสมโภชพระคริสต์แสดงองค์"), ("2023-03-01", "วันครบรอบการสถาปนาสาธารณรัฐนอยชาแตล"), ("2023-03-19", "วันสมโภชนักบุญโยเซฟ"), + ("2023-04-06", "วันก่อนวันศุกร์ประเสริฐ"), ("2023-04-07", "วันศุกร์ประเสริฐ"), ("2023-04-10", "วันจันทร์อีสเตอร์"), ("2023-04-13", "วันรำลึกชัยชนะยุทธการเนเฟลส์"), ("2023-04-17", "เซ็กเซ่ะเล๊าเท่น"), ("2023-05-01", "วันแรงงาน"), + ("2023-05-17", "วันก่อนวันสมโภชพระเยซูเจ้าเสด็จขึ้นสวรรค์"), ("2023-05-18", "วันสมโภชพระเยซูเจ้าเสด็จขึ้นสวรรค์"), ("2023-05-29", "วันจันทร์หลังวันสมโภชพระจิตเจ้า"), ("2023-06-08", "วันสมโภชพระคริสตวรกาย"), @@ -922,9 +1126,13 @@ def test_l10n_th(self): ("2023-09-25", "วันสมโภชนักบุญนิโคลัสแห่งฟลือเออ"), ("2023-11-01", "วันสมโภชนักบุญทั้งหลาย"), ("2023-12-08", "วันสมโภชแม่พระผู้ปฏิสนธินิรมล"), + ("2023-12-24", "วันคริสต์มาสอีฟ"), ("2023-12-25", "วันคริสต์มาส"), ("2023-12-26", "วันสมโภชนักบุญสเตเฟน"), - ("2023-12-31", "วันกอบกู้เอกราชสาธารณรัฐเจนีวา"), + ("2023-12-27", "วันหยุดเพิ่มเติม"), + ("2023-12-28", "วันหยุดเพิ่มเติม"), + ("2023-12-29", "วันหยุดเพิ่มเติม"), + ("2023-12-31", "วันกอบกู้เอกราชสาธารณรัฐเจนีวา; วันสิ้นปี"), ) def test_l10n_uk(self): @@ -935,11 +1143,13 @@ def test_l10n_uk(self): ("2023-01-06", "Богоявлення"), ("2023-03-01", "Річниця проголошення Республіки"), ("2023-03-19", "День Святого Йосипа"), + ("2023-04-06", "Переддень Страсної п’ятниці"), ("2023-04-07", "Страсна пʼятниця"), ("2023-04-10", "Великодній понеділок"), ("2023-04-13", "Свято перемоги під Нефельсом"), ("2023-04-17", "Зексельйотен"), ("2023-05-01", "День праці"), + ("2023-05-17", "Переддень Вознесіння Господнього"), ("2023-05-18", "Вознесіння Господнє"), ("2023-05-29", "День Святого Духа"), ("2023-06-08", "Свято Тіла і Крові Христових"), @@ -955,7 +1165,11 @@ def test_l10n_uk(self): ("2023-09-25", "День Святого Ніклауса з Флюе"), ("2023-11-01", "День усіх святих"), ("2023-12-08", "Непорочне зачаття Діви Марії"), + ("2023-12-24", "Святий вечір"), ("2023-12-25", "Різдво Христове"), ("2023-12-26", "День Святого Стефана"), - ("2023-12-31", "День відновлення республіки"), + ("2023-12-27", "Проміжний вихідний"), + ("2023-12-28", "Проміжний вихідний"), + ("2023-12-29", "Проміжний вихідний"), + ("2023-12-31", "День відновлення республіки; Переддень Нового року"), ) From 205f1afbf035e31af00831108724d7534a90c673 Mon Sep 17 00:00:00 2001 From: PPsyrius <19505219+PPsyrius@users.noreply.github.com> Date: Thu, 9 Oct 2025 11:38:42 +0700 Subject: [PATCH 5/8] Correcting `uk` l10n, misc. fixes Co-authored-by: ~Jhellico --- holidays/countries/switzerland.py | 4 +--- holidays/locale/uk/LC_MESSAGES/CH.po | 6 +++--- tests/countries/test_switzerland.py | 4 +++- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/holidays/countries/switzerland.py b/holidays/countries/switzerland.py index c1f7bca57e..ad7399082b 100644 --- a/holidays/countries/switzerland.py +++ b/holidays/countries/switzerland.py @@ -785,9 +785,7 @@ def _populate_subdiv_zh_optional_holidays(self): self._add_holiday_40_days_past_easter(tr("Brückentag nach Auffahrt")) # This is only granted if end-year bridge holidays <= 3. - if self._year >= 1899 and not ( - self._is_saturday(self._christmas_day) or self._is_sunday(self._christmas_day) - ): + if self._year >= 1899 and not self._is_weekend(self._christmas_day): # Knabenschiessen. self._add_holiday_1_day_past_2nd_sun_of_sep(tr("Knabenschiessen")) diff --git a/holidays/locale/uk/LC_MESSAGES/CH.po b/holidays/locale/uk/LC_MESSAGES/CH.po index 0d8241b026..3581840c6d 100644 --- a/holidays/locale/uk/LC_MESSAGES/CH.po +++ b/holidays/locale/uk/LC_MESSAGES/CH.po @@ -16,7 +16,7 @@ msgid "" msgstr "" "Project-Id-Version: Holidays 0.83\n" "POT-Creation-Date: 2023-04-10 15:41+0300\n" -"PO-Revision-Date: 2025-10-08 13:09+0700\n" +"PO-Revision-Date: 2025-10-09 10:44+0700\n" "Last-Translator: PPsyrius \n" "Language-Team: Holidays Localization Team\n" "Language: uk\n" @@ -129,7 +129,7 @@ msgstr "Кнабеншісен" #. Day before Good Friday. msgid "Vortag vor Karfreitag" -msgstr "Переддень Страсної п’ятниці" +msgstr "Переддень Страсної пʼятниці" #. Sechseläuten. msgid "Sechseläuten" @@ -149,7 +149,7 @@ msgstr "Переддень Вознесіння Господнього" #. Bridge Holiday for Ascension Day. msgid "Brückentag nach Auffahrt" -msgstr "День-понт після Вознесіння Господа" +msgstr "Проміжний вихідний після Вознесіння Господнього" #. Bridge Holiday. msgid "Brückentag" diff --git a/tests/countries/test_switzerland.py b/tests/countries/test_switzerland.py index 8f0f28b089..83f1206c12 100644 --- a/tests/countries/test_switzerland.py +++ b/tests/countries/test_switzerland.py @@ -871,6 +871,8 @@ def test_day_before_ascension_day(self): def test_bridge_holiday_for_ascension_day(self): name = "Brückentag nach Auffahrt" + self.assertNoHolidayName(name) + for subdiv, holidays in self.subdiv_optional_holidays.items(): if subdiv == "ZH": self.assertHolidayName( @@ -1143,7 +1145,7 @@ def test_l10n_uk(self): ("2023-01-06", "Богоявлення"), ("2023-03-01", "Річниця проголошення Республіки"), ("2023-03-19", "День Святого Йосипа"), - ("2023-04-06", "Переддень Страсної п’ятниці"), + ("2023-04-06", "Переддень Страсної пʼятниці"), ("2023-04-07", "Страсна пʼятниця"), ("2023-04-10", "Великодній понеділок"), ("2023-04-13", "Свято перемоги під Нефельсом"), From cdcf76b61e038d3986918b73f6f843348b6fb110 Mon Sep 17 00:00:00 2001 From: PPsyrius <19505219+PPsyrius@users.noreply.github.com> Date: Fri, 10 Oct 2025 11:26:19 +0700 Subject: [PATCH 6/8] =?UTF-8?q?Force=20Sechsel=C3=A4uten=20observance=20pr?= =?UTF-8?q?e-1952?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- holidays/countries/switzerland.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/holidays/countries/switzerland.py b/holidays/countries/switzerland.py index ad7399082b..34d4e3c8fd 100644 --- a/holidays/countries/switzerland.py +++ b/holidays/countries/switzerland.py @@ -750,10 +750,8 @@ def _populate_subdiv_zh_common_holidays(self): ) # From 1902-1951 this was the First Monday following the Vernal Equinox. else: - self._move_holiday( - self._add_holiday(name, self._vernal_equinox_date), - rule=ALL_TO_NEXT_MON, - show_observed_label=False, + self._move_holiday_forced( + self._add_holiday(name, self._vernal_equinox_date), rule=ALL_TO_NEXT_MON ) # Christmas Eve. From 5603ded19d93fae81360de7515a5a36f9229f8ef Mon Sep 17 00:00:00 2001 From: PPsyrius <19505219+PPsyrius@users.noreply.github.com> Date: Fri, 10 Oct 2025 11:54:59 +0700 Subject: [PATCH 7/8] Code Review Suggestions --- holidays/countries/switzerland.py | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/holidays/countries/switzerland.py b/holidays/countries/switzerland.py index 34d4e3c8fd..c2d9e797b1 100644 --- a/holidays/countries/switzerland.py +++ b/holidays/countries/switzerland.py @@ -734,7 +734,7 @@ def _populate_subdiv_zh_public_holidays(self): # Saint Stephen's Day. self._add_christmas_day_two(tr("Stephanstag")) - def _populate_subdiv_zh_common_holidays(self): + def _populate_subdiv_zh_common(self): """Populate list of holidays observed by both `HALF_DAY` and `OPTIONAL` categories.""" # Day before Good Friday. self._add_holy_thursday(tr("Vortag vor Karfreitag")) @@ -761,7 +761,7 @@ def _populate_subdiv_zh_common_holidays(self): self._add_new_years_eve(tr("Vortag vor Neujahr")) def _populate_subdiv_zh_half_day_holidays(self): - self._populate_subdiv_zh_common_holidays() + self._populate_subdiv_zh_common() if self._year >= 1899: # Knabenschiessen. @@ -771,19 +771,17 @@ def _populate_subdiv_zh_half_day_holidays(self): self._add_holiday_38_days_past_easter(tr("Vortag vor Auffahrt")) def _populate_subdiv_zh_optional_holidays(self): - self._populate_subdiv_zh_common_holidays() + self._populate_subdiv_zh_common() + + dec_25 = self._christmas_day # This is only granted if end-year bridge holidays <= 2. - if ( - self._is_tuesday(self._christmas_day) - or self._is_wednesday(self._christmas_day) - or self._is_thursday(self._christmas_day) - ): + if self._is_tuesday(dec_25) or self._is_wednesday(dec_25) or self._is_thursday(dec_25): # Bridge Holiday for Ascension Day. self._add_holiday_40_days_past_easter(tr("Brückentag nach Auffahrt")) # This is only granted if end-year bridge holidays <= 3. - if self._year >= 1899 and not self._is_weekend(self._christmas_day): + if self._year >= 1899 and not self._is_weekend(dec_25): # Knabenschiessen. self._add_holiday_1_day_past_2nd_sun_of_sep(tr("Knabenschiessen")) @@ -796,7 +794,7 @@ def _populate_subdiv_zh_optional_holidays(self): @property def _vernal_equinox_date(self) -> tuple[int, int]: - """Return the Vernal Equinox date for Zurich (1902–1951).""" + """Return the Vernal Equinox date for Zurich (1902-1951).""" day = 21 if (self._year >= 1916 and self._year % 4 == 0) or self._year == 1949: day = 20 From a4a98c5b0d708dcc2602ccedfe24ec32f2d692d4 Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Fri, 10 Oct 2025 18:48:54 -0700 Subject: [PATCH 8/8] Update code --- holidays/countries/switzerland.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/holidays/countries/switzerland.py b/holidays/countries/switzerland.py index c2d9e797b1..ce751a7806 100644 --- a/holidays/countries/switzerland.py +++ b/holidays/countries/switzerland.py @@ -795,10 +795,9 @@ def _populate_subdiv_zh_optional_holidays(self): @property def _vernal_equinox_date(self) -> tuple[int, int]: """Return the Vernal Equinox date for Zurich (1902-1951).""" - day = 21 - if (self._year >= 1916 and self._year % 4 == 0) or self._year == 1949: - day = 20 - return MAR, day + return MAR, 20 if ( + (self._year >= 1916 and self._year % 4 == 0) or self._year == 1949 + ) else 21 class CH(Switzerland):