Calendar tools holidays/he
חג הוא תאריך קבוע בלוח־השנה בו מציינים אירוע משמח, היסטורי, דתי, לאומי, ממלכתי וכדומה. חגים לרוב ילוו בטקסים, חגיגות, תפילות ומנהגים שונים על פי מנהג המקום או על פי החוק, כמו תחפושות בליל כל הקדושים ופורים, סופגניות בחנוכה ועוד. מאחר וחגים הם תלויי מדינה או דת, הרי שברוב המקרים, חג לאומי של מדינה אחת לא יחג במדינה אחרת. יחד עם זאת, לא מן הנמנע שאזרחי ארצות הברית החיים מחוץ לארצם למשל, יחגגו את ה־4 ביולי במקום מגוריהם.
המורכבות הזו שבתלויות בין חג, שפה ומדינה, עולה צורך לאפשרות להתאים לוחות חגים בהתאמה אישית ומיזם גרפס מספק את היכול הזו.
פרטים על אופן הוספת ערכת־חגים מותאמת־אישית או שינוי ערכת החגים המובנית ניתן למצוא בפלט גרמפס דוחות מבוססי יומן שנה .
Contents
ערכת חג ברירת מחדל
כברירת מחדל, יחד עם התקנת גרמפס, מותקן גם קובץ מתוצר מראש בשםholidays.xml
. את הקובץ הזה ניתן להתאים אישית על ידי עריכתו והוספת ערכות־חג נוספות, או ליצור קובץ חדש holidays.xml
מותאם אישית לחלוטין.
קובץ holidays.xml מותאם אישית
לעריכת קובץ holidays.xml
מומלץ להעתיק אותו ממחיצת המערכת בנתיב /usr/share/gramps
למחיצת משתמש גרמפס. זוהי מחיצה שנוצרה במהלך התקנת גרמפס והיא חלק ממבנה הקבצים שלה. המחיצה מאפשרת גישת קריאה כתיבה ולכן נח לערוך את הקובץ המועתק במחיצה זו.
באופן דומה אפשר פשוט לייצור קובץ חדש על פי המבנה המתואר להלן ולשמור אותו בשם holidays.xml
. גרמפס יבדוק המצאות הקובץ במחיצה זו תחילה.
הוספת חגים למדינה
אם התברר שחסרים חגים ברשימת החגים ברירת המחדל, או שהיא חלקית בלבד, ניתן לבקש מצוות מייזם גרפס להוסיפם. במקרה זה רשימת החגים שתועבר לצוות הפתוח תהווה את רשימת ברירת המחדל החדשה.
בקישור הבא ניתן למצוא רשימת חגים מוכרים על ידי הממסד בישראל. כדי להוסיף חדים ללוח השנה, נדרש לערוף את הקובץ holidays.xml
שממוקם באתר גיטהאב בעמוד המייזם, בנתיב:
- לגרסת גרמפס 5 ואילך:
data/holidays.xml
לאחר סיום העריכה ובדיקה ולוח־השנה החדש נמצא תקין, מעבירים את הקובץ לצוות הפתוח באמצאות "בקשת מיזוג " (pull request) באתר גיטהאב פעולה שלמעשה מעלה את הקובץ למתחם הפתוח שם הוא יעבור מספר בדיקות נוספות עד שיוטמע בקוד ליבת המערכת כקובץ ברירת מחדל חדש.
המרות לוח שנה עברי לגרגוריאני
במדינת ישראל הלוח העברי הוא לוח השנה הרשמי, לצד הלוח הגרגוריאני, המשמש כלוח השנה האזרחי הבינלאומי.
- הלוח העברי הוא לוח־שנה שמבוסס על שילוב מחזור הירח ומחזור השמש (לוח ירחי־שמשי) תוך התחשבות בימות השבוע.
- כל שנה מכילה 12 (בשנה פשוטה) או 13 חודשים (בשנה מעוברת) המתחילים כל אחד במולד הירח.
- המספר המשתנה של חודשי השנה שומר על הקבלה בין שנה עברית ממוצעת למחזור השמש.
- אורך שנה פשוטה בלוח העברי הוא 353–355 ימים, ואורך שנה מעוברת הוא 383–385 ימים .
- היממה בלוח העברי מתחילה עם שקיעת החמה או צאת הכוכבים .
מאחר שחגי ישראל ומועדיו נקבעים על־פי הלוח העברי, מציאת התאריך הגרגוריאני של כל חג מחייב חישוב שמבוסס על העקרונות הבאים:
- השוויון־האביבי. השוויון האביבי הוא התאריך בו היום והלילה שווים באורך. הוא תמיד חל ב־20 או 21 במרץ.
- אם השנה עבורה מבקשים לחשב תאריך גרגוריאני היא שנה מעוברת, השוויון האביבי יחול ב־21 במרץ.
- מחשבים תחילה את התאריך בו חל חג הפסח.
- מאחר וחג הפסח חל ביום ראשון הראשון לאחר השוויון האביבי
- אם השנה היא שנה מעוברת,
- והשנה היא גם שנה מעוברת משובשת, (שנה מעוברת משובשת היא שנה מעוברת שמתחלקת גם ב-19 אך לא ב-400.)
- חג הפסח יחול ביום שני הראשון לאחר השוויון האביבי.
לדוגמה, חג הפסח בשנת 2023 הוא יום רביעי, 9 באפריל. מאחר ששנת 2023 היא שנה מעוברת, אך לא שנה מעוברת משובשת. השוויון האביבי בשנת 2023 הוא ב־21 במרץ. היום הראשון לאחר השוויון האביבי הוא יום ראשון, 22 במרץ. חג הפסח, שהוא יום ראשון הראשון לאחר השוויון האביבי, הוא ביום רביעי, 9 באפריל. הנוסחה הכללית להמרת תאריך בלוח העברי לתאריך לפי הלוח הגרגוריאני היא:
תאריך גרגוריאני = (שנה עברית - 5770) * 12.37 + 'ראש השנה הראשון'
-- שנה עברית: מנין השנים העברי עבורו מחשבים תאריך גרגוריאני.
-- 5770: נתון קבוע – השנה העברית הראשונה שמשמשת בסיס לחישוב.
-- 12.37: ממוצע מספר הימים בשנה עברית, שהוא 354.367.
-- ראש השנה הראשון: התאריך הגרגוריאני בו חל ראש השנה העברי הראשון שנחגג – 19 באפריל.
שנת 5770 משמשת כשנת בסיס (נתון קבוע) לחישוב תאריכים גרגוריאניים של חגים ומעדים עבריים, בהיותה השנה העברית הראשונה לתחילת השימוש בלוח השנה העברי המחושב
הנוסחה מבוססת על העובדה ששנה עברית היא לוח־שנה ירחי שמחושב לפי מחזור הירח. מחזור הירח מונה 29.5 ימים. לכן, שנה עברית מונה 12 חודשים בני 29 או 30 ימים, לרבות חודש 13 אחת
לכל ארבע שנים, שבו 30 או 31 יומים.
תאריכי החגים העבריים בלוח הגרגוריאני משתנים כל שנה בהתאם לשינויים במחזור הירח.
הנוסחה לא מושלמת, מכיוון שהיא לא לוקחת בחשבון את העובדה שהשנה העברית אינה בדיוק 12 חודשים בני 29.5 ימים. יחד עם זאת, הנוסחה מחשבת במדויק תאריכי חגים לכל שנה בטווח של 200 שנים.
מבנה קובץ holidays.xml
מבנה קובץ ה־XML פשוט למדי, לכל מי שהתנסה בעבר בעבודה עם קודי HTML,XML לא תהיה כל בעיה להתחיל לערוך את הקובץ מייד.
לאחרים שטרם התנסה בזאת, ההסברים בעמוד זה יסייעו להתחיל בתהליך.
להלן תאור כללי של מבנה הקובץ רשימת השדות ומשמעות כל אחד מהם:
<?xml version="1.0" encoding="UTF-8"?> <calendar> <country _name=COUNTRYNAME> <== <mark>שם המדינה עבור לוח־השנה <date name=NAME value=VALUE type=TYPE offset=OFFSET if=EXPRESSION /> <== <mark>כותרת האירוע בלוח־השנה (VALUE, TYPE, OFFSET, EXPRESSION, הפרוט בטבלה מטה). – NAME</mark> ... </country> <country _name=COUNTRYNAME> <date name=NAME value=VALUE type=TYPE offset=OFFSET if=EXPRESSION /> <== <mark>וחוזר חלילה למדינה הבאה</mark> ...
בכול מקום בו מופיעה מילה באותיות רישיות (capitalized), היא תוחלף בערך המתאים, כפי שמתואר במקטע מילות מפתח להלן.
מילות מפתח
להלן רשימת מילות מפתח שמשמשות בעת יצירת או הרחבת קובץ holidays.xml
.
כל מילות המפתח למעט NAME ו־VALUE הן רשות.
מילת מפתח | תיאור |
---|---|
COUNTRYNAME | "ארצות הברית", "סין", "ישראל" וכן הלאה. למרות הרשימה הארוכה, אין הכרח ליצור את כל המדינות הללו. ניתן להפוך אותן ל"ערכת חג" בלבד. לדוגמה ערכות־חג "נוצרית", "מוסלמית", "מזרח אירופאית" ודומיהן. ניתן לבחור בשמות אלו מתוך הרשימה מדינה לחגים: שתוצג בעת הפעלת דוחות לוח־שנה.
את שמות המדינה אפשר להזין בכל שפה לרבות עברית. |
NAME | המלל שיופיע בלוח־השנה |
TYPE | "חילוני", "דתי", "אישי", "מידע" (כרגע לא נמצא בשימוש בלוח השנה, אבל בהחלט ייתכן שזה לא יימשך זמן רב). את מילות המפתח הללו אין לתרגם ויש להשאין כפי שהן לא מתורגמות ("secular", "religious", "personal", "informational"). |
EXPRESSION | ביטוי פייתון שחייב להחזיר 'נכון' (true) על מנת שהארוע יופיע בלוח־השנה. המשתנים y, m ו־d מותרים בשימוש (עבור שנה, חודש ויום, כל המספרים השלמים). לדוגמאות נוספות: VALUE |
VALUE | מלת מפתח זו יכולה לקבל את הערכים הבאים |
"YEAR/MONTH/DAY" | שנה/מספר חודש/יום |
"2012/12/25" | תאריך מסויים, נקוב |
"*/12/25" | כל שנה בחודש מסויים וביום מסויים |
"YEAR/MONCODE/DAY" | שנה/שם חודש/יום |
"2012/dec/25" | בתאריך מסויים, נקוב |
"*/dc/25" | כל שנה בחודש מסויים ויום מסויים |
"YEAR/NUMBER/DAYCODE/MONCODE" | היום ה־'N 'בכול שבוע בכול חודש |
"2012/1/mon/dec" | יום שני הראשון בחודש דצמבר, 2012 |
"*/-1/tue/dec" | יום־שלישי האחרון בכול דצמבר בכול שנה |
"> EXPRESSION" | בהמשך לאחד משני הסוגים הקודמים של VALUES. ערכי ביטוי שימושיים נוכחיים הם: |
"> easter(y)" | פסחא בשנה הנוכחית |
"> dst(y)[0]" | שעון קיץ, "us", התחלה |
"> dst(y)[1]" | שעון קיץ, "us", סיום |
"> dst(y, "eu")[0]" | שעון קיץ, "eu", התחלה |
"> dst(y, "eu")[1]" | שעון קיץ, "eu", סיום |
"> dow(y, m, d) == 1" | dow מחזיר את מספר השבוע על פי iso, 1=יום שני ו־=יום ראשון7 |
YEAR | "*" או שנה ממשית. "*" משמעותה כל שנה אפשרית. |
MONTH "*" | "*" או חודש ממשי. "*" משמעותה כל חודש אפשרי. |
DAY "*" | "*" או יום ממשי. "*" משמעותה כל יום אפשרי. |
NUMBER | מספר היום בחודש. לדוגמה, "כל יום ג', שמגיע שלישי בכול חודש אפריל, בכל שנה שהיא" יקבל את הביטוי "*/3/tue/apr". NUMBER יכול לקבל גם ערך שלילי, כלומר הוא יספר מסוף החודש. "יום שלישי האחרון באפריל 2007" במקרה זה יהיה הביטוי "2007/-1/tue/4" |
DAYCODE | "mon", "tue", "wed", "thu", "fri", "sat", or "sun". (לא לתרגם את ימי השבוע; הכול באותיות קטנות) |
MONCODE | |
MONTH | 'jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'. (לא לתרגם את חודשי השנה; להשאיר הכול באותיות קטנות) |
OFFSET | מנגנון שמאפשר את הסטתב הערך 'יום' 'd'(מספר שלילי) קדימה או אחורה. |
number | מספר (גם מספר שלילי) שמסיט את היום שנקבע על ידי VALUE |
DAYCODE | מספר קוד (גם מספר שלילי) מציין את ה־DAYCODE הבא שיכול להיות זהה ליום זה או מוסט קדינה או אחורה באמצעות , הבא(+)/הקודם(-). |
"workday" או "weekend" | (גם מספר שלילי) - יום העבודה/מנוחה הבא שמתרחש ביום זה |
לקריאה נוספת:
- הקישור הבא מפנה לקובץ כתוב בשפת פייתון (מעט טכני) שמכיל את כל רשימת מילות המפתח ואת הקוד שמחשב ערכים קבועים כמו למשל מילת המפתח <passover (y)> שמחשבת את היום בו חל חג הפסח בשנה הנוכחית /gramps/plugins/libholiday.py
תרגום
כאמור רשומות חגים ייכתבו בדרך כלל למדינה מסוימת, המשמעות היא שאין צורך לרוב לכתוב רשומות חג ביותר משפה אחת לחג. יחד עם זאת, ייתכן שכדאי בכל זאת לתרגם את שם המדינה, הערכים ומלל החג לשפה שבה פועלת תוכנת גרמפס. כדי לתרגם שם מדינה או שם חג, יש פשוט להקדים את שם פריט ה־XML בקו תחתון. לדוגמה:
... <country _name="Jewish Holidays"> <date _name="Purim" value="> passover(y)" offset="-30"/> <date _name="Passover" value="> passover(y)" offset="0"/> ... </country> ...
בדוגמה זו, ערכת גרמפס gettext .תחפש תרגומים למילים אלו "Jewish Holidays", "Purim", ו־"Passover". לסיוע בהוספת תרגומים אלו Translating Gramps.
דוגמה
בדוגמה שלהלן, הערכה האחרונה ברשומה ( <country name="פינלנד"> ), תטען רק אם המדינה היא פינלנד. מה שזה אומר זה שבכול יום חמישי אחרון בכל חודש ובכל שנה, יש "משחק קלפים!" שם קובץ: holidays.xml
<?xml version="1.0" encoding="UTF-8"?> <calendar> <country name="ארצות הברית"> <date name="תחילת שעוף קיץ" value="> dst(y)[0]" type="informational" /> <date name="סוף שעון קיץ" value="> dst(y)[1]" type="informational" /> <date name="שנה חדשה" value="*/1/1" type="national" /> <date name="יום העבודה" value="*/1/mon/sep" type="national" /> <date name="חג ההודיה" value="*/4/thu/nov" type="national" /> <date name="Inauguration Day" value="*/1/20" if="(y - 1980) % 4 == 0" type="national" /> <date name="יום הולדת ג'ורג' וושינגטון" value="*/3/mon/feb" type="secular" /> <date name="יום פטריק הקדוש" value="*/3/17" type="secular" /> <date name="יום העוזרים האישיים" value="*/-1/sat/apr" offset="-3" type="secular" /> <date name="Arbor Day" value="*/-1/fri/apr" type="secular" /> <date name="יום האם" value="*/2/sun/may" type="secular" /> <date name="יום האב" value="*/3/sun/jun" type="secular" /> <date name="ML Kings's Birthday" value="*/3/mon/jan" type="secular" /> <date name="יום הזיכרון" value="*/-1/mon/may" type="secular" /> <date name="פסחה" value="> easter(y)" type="religious" /> <date name="Ash Wednesday" value="> easter(y)" offset="-46" type="religious" /> </country> <country name="סין"> <date name="שנה סינית חדשה" value="2006/1/29" type="national" /> </country> <country name="פינלנד"> <date name="ערב קלפים" value="*/-1/thu/*" type="personal" /> </country> </calendar>
דוחות־מבוססי לוח־שנה
גרמפס מגיעה עם חבילת הדוחות מבוססי לוח־שנה, הבאה:
- דוח לוח־שנה: (תפריט דוחות ← דוחות חזותיים ← לוח־שנה... )
- דוח ימי הולדת וימי שנה: (תפריט דוחות ← דוחות מילוליים ← דוח ימי הולדת וימי שנה... )
- פלט לאתר המרשתת באמצעות דוח לוח־שנה מרשתת:(תפריט דוחות ← עמודי מרשתת ← דוח לוח־שנה מרשתת... )
בחירת חגים למדינה:
ניתן לשלוט ולבחור אילו
לוחות שנה זמינים
מדינות:
- בולגריה / קנדה / צ'ילה / סין / קרואטיה / צ'כיה / אנגליה / פינלנד / צרפת / גרמניה / יפן / ניו זילנד / רוסיה / סרביה / סרביה (לטינית) / סלובקיה / שוודיה / אוקראינה / ארצות הברית
חגים: