Explanation of how to add or change the holidays appearing on the output of the calendars in Gramps. This includes the Text:''Birthday and Anniversary Report'', the Graphical:''Calendar'' Report, and the ''Web Calendar''.

−

+

−

This article explains how to add or change the holidays appearing on the output of the calendar tool.

+

==Calendar Holidays==

==Calendar Holidays==

−

Gramps now comes with three Calendar-based reports: a Calendar, and a Birthday and Anniversary report, and an output for the Web. If you would like to add your country's holidays to the calendar, then you can add them to the file gramps/plugins/holidays.xml. Here, you can add recurring annual events in a variety of ways. The format is generally:

# And an output for the Web (menu {{man menu|Reports->Web Pages->Web Calendar...}} )

+

+

If you would like to add your country's holidays to the calendar, then you can add them to the file [http://gramps.svn.sourceforge.net/viewvc/gramps/trunk/src/plugins/lib/holidays.xml.in?view=markup holidays.xml.in]. Here, you can add recurring annual events in a variety of ways. The format is generally:

+

+

<code>

+

<?xml version="1.0" encoding="UTF-8"?>

<calendar>

<calendar>

−

<country name=COUNTRYNAME>

+

<country _name=COUNTRYNAME>

<date name=NAME value=VALUE type=TYPE offset=OFFSET if=EXPRESSION />

<date name=NAME value=VALUE type=TYPE offset=OFFSET if=EXPRESSION />

...

...

</country>

</country>

−

<country name=COUNTRYNAME>

+

<country _name=COUNTRYNAME>

<date name=NAME value=VALUE type=TYPE offset=OFFSET if=EXPRESSION />

<date name=NAME value=VALUE type=TYPE offset=OFFSET if=EXPRESSION />

...

...

Line 18:

Line 23:

...

...

</calendar>

</calendar>

−

</nowiki>

+

</code>

where each of the capitalized words would be filled in with appropriate values, as follows. All but NAME and VALUE are optional.

where each of the capitalized words would be filled in with appropriate values, as follows. All but NAME and VALUE are optional.

Line 25:

Line 30:

*NAME => the text to appear on the calendar

*NAME => the text to appear on the calendar

*TYPE => "secular", "religious", "personal", "informational" (This isn't currently used in the calendar, but could be. Use these keywords, untranslated.)

*TYPE => "secular", "religious", "personal", "informational" (This isn't currently used in the calendar, but could be. Use these keywords, untranslated.)

−

*EXPRESSION => a python expression that must be true for this to appear on the calendar. You can use y, m, and d variables (for year, month, and day, all integers).

+

*EXPRESSION => a python expression that must be true for this to appear on the calendar. You can use y, m, and d variables (for year, month, and day, all integers). See VALUE for examples.

−

*VALUE => "YEAR/MONTH/DAY" or "YEAR/NUMBER/DAYCODE/MONCODE" or "&EXPRESSION" (which evaluates to one of the previous two types of VALUES). Current useful expression values are "&easter(y)" (Easter for current year) and "&easter(y) - 46" (forty-six days before Easter is Ash Wednesday).

+

*VALUE =>

+

** "YEAR/MONTH/DAY"

+

*** "2012/12/25"

+

*** "*/12/25"

+

** "YEAR/MONCODE/DAY"

+

*** "2012/dec/25"

+

*** "*/dec/25"

+

** "YEAR/NUMBER/DAYCODE/MONCODE" (nth day of week in month, year)

+

*** "2012/1/mon/dec" (first monday in december, 2012)

+

*** "*/-1/tue/dec" (last tuesday in december, every year)

+

** "> EXPRESSION" (which evaluates to one of the previous two types of VALUES). Current useful expression values are:

*NUMBER => number of weekday in month. For example, "every 3rd Tuesday in April" would be "*/3/tue/apr". NUMBER can also be negative, which means it is counted from the end of the month. "last Tuesday in April 2007" could be "2007/-1/tue/4"

*NUMBER => number of weekday in month. For example, "every 3rd Tuesday in April" would be "*/3/tue/apr". NUMBER can also be negative, which means it is counted from the end of the month. "last Tuesday in April 2007" could be "2007/-1/tue/4"

*DAYCODE => "mon", "tue", "wed", "thu", "fri", "sat", or "sun". Do not translate these words; use all lowercase.

*DAYCODE => "mon", "tue", "wed", "thu", "fri", "sat", or "sun". Do not translate these words; use all lowercase.

−

*MONCODE => MONTH, or 'jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', or 'dec'. String version should not be translated; use all lowercase.

+

*MONCODE =>

−

*OFFSET => DAYCODE or a number (either may be negative) that offsets the day determined above. If it is a DAYCODE, then it will find the next DAYCODE that is either the same as this day, or the next(+)/prev(-) one.

** DAYCODE (may be negative), the next DAYCODE that is either the same as this day, or the next(+)/prev(-) one.

+

** "workday" or "weekend" (may be negative) - the next workday/weekend that is on this day, or the next/prev

+

+

== Translations ==

+

+

Holiday entries are generally written for a specific country, and thus typcailly don't need to be written for more than one language. However, it might be appropriate to have your entries country name and holiday text be translated into the language that Gramps is running in. To make a country name or holiday name get translated, simply precede the name of the XML item with an underscore. For example:

+

+

<pre>

+

...

+

<country _name="Jewish Holidays">

+

<date _name="Purim" value="> passover(y)" offset="-30"/>

+

<date _name="Passover" value="> passover(y)" offset="0"/>

+

...

+

</country>

+

...

+

</pre>

+

+

In this example, "Jewish Holidays", "Purim", and "Passover" will be looked up in the Gramps gettext system for translations. If you would like to help add those translations, please see [[Translating GRAMPS]].

The last set will only load if your country is Finland. It says that Card Night is the last Thursday of every month, every year. Let's play!

The last set will only load if your country is Finland. It says that Card Night is the last Thursday of every month, every year. Let's play!

−

Note that you can have two separate holidays.xml files: one where gramps is installed, and one in your personal .gramps/plugins/ folder.

+

Note that you can have two separate holidays.xml files: one where GRAMPS is installed, and one in your personal .gramps/plugins/ folder.

+

+

[[Category:Plugins]]

+

[[Category:Translators/Categories]]

+

[[Category:Developers/General]]

+

[[Category:Reports]]

Revision as of 02:39, 3 March 2012

Explanation of how to add or change the holidays appearing on the output of the calendars in Gramps. This includes the Text:Birthday and Anniversary Report, the Graphical:Calendar Report, and the Web Calendar.

If you would like to add your country's holidays to the calendar, then you can add them to the file holidays.xml.in. Here, you can add recurring annual events in a variety of ways. The format is generally:

where each of the capitalized words would be filled in with appropriate values, as follows. All but NAME and VALUE are optional.

COUNTRYNAME => "United States", "China", etc. You don't have to make these countries, however. You can make these just a "holiday set" which could be "Christian", "Muslim", "Eastern European", etc. These names can be selected from a list when running calendar-related reports. You can use your own language for this name.

NAME => the text to appear on the calendar

TYPE => "secular", "religious", "personal", "informational" (This isn't currently used in the calendar, but could be. Use these keywords, untranslated.)

EXPRESSION => a python expression that must be true for this to appear on the calendar. You can use y, m, and d variables (for year, month, and day, all integers). See VALUE for examples.

VALUE =>

"YEAR/MONTH/DAY"

"2012/12/25"

"*/12/25"

"YEAR/MONCODE/DAY"

"2012/dec/25"

"*/dec/25"

"YEAR/NUMBER/DAYCODE/MONCODE" (nth day of week in month, year)

"2012/1/mon/dec" (first monday in december, 2012)

"*/-1/tue/dec" (last tuesday in december, every year)

"> EXPRESSION" (which evaluates to one of the previous two types of VALUES). Current useful expression values are:

NUMBER => number of weekday in month. For example, "every 3rd Tuesday in April" would be "*/3/tue/apr". NUMBER can also be negative, which means it is counted from the end of the month. "last Tuesday in April 2007" could be "2007/-1/tue/4"

DAYCODE => "mon", "tue", "wed", "thu", "fri", "sat", or "sun". Do not translate these words; use all lowercase.

DAYCODE (may be negative), the next DAYCODE that is either the same as this day, or the next(+)/prev(-) one.

"workday" or "weekend" (may be negative) - the next workday/weekend that is on this day, or the next/prev

Translations

Holiday entries are generally written for a specific country, and thus typcailly don't need to be written for more than one language. However, it might be appropriate to have your entries country name and holiday text be translated into the language that Gramps is running in. To make a country name or holiday name get translated, simply precede the name of the XML item with an underscore. For example:

In this example, "Jewish Holidays", "Purim", and "Passover" will be looked up in the Gramps gettext system for translations. If you would like to help add those translations, please see Translating GRAMPS.