diff --git a/gramps/plugins/webreport/basepage.py b/gramps/plugins/webreport/basepage.py index 711ce781e..a169446e4 100644 --- a/gramps/plugins/webreport/basepage.py +++ b/gramps/plugins/webreport/basepage.py @@ -60,7 +60,7 @@ import logging from gramps.gen.const import GRAMPS_LOCALE as glocale from gramps.gen.lib import (FamilyRelType, NoteType, NameType, Person, UrlType, Name, PlaceType, EventRoleType, - Family, Citation, Place) + Family, Citation, Place, Date) from gramps.gen.lib.date import Today from gramps.gen.const import PROGRAM_NAME, URL_HOMEPAGE from gramps.version import VERSION @@ -2902,7 +2902,11 @@ class BasePage: # pylint: disable=C1001 if self.reference_sort: role = obj[2] # name elif len(obj[2].split('-')) > 1: - role = obj[2] # date in ISO format + dummy_cal, role = obj[2].split(':') # date in ISO format + # dummy_cal is the original calendar. remove it. + if len(role.split(' ')) == 2: + # for sort, remove the modifier before, after... + (dummy_modifier, role) = role.split(' ') else: role = "3" return role @@ -2917,15 +2921,34 @@ class BasePage: # pylint: disable=C1001 if role != "": if self.reference_sort: role = "" - elif len(role.split('-')) > 1: + elif role[1:2] == ':': + # cal is the original calendar + cal, role = role.split(':') # conver ISO date to Date for translation. + # all modifiers are in english, so convert them + # to the local language if len(role.split(' - ')) > 1: (date1, date2) = role.split(' - ') role = self._("between") + " " + date1 + " " role += self._("and") + " " + date2 + elif len(role.split(' ')) == 2: + (pref, date) = role.split(' ') + if "aft" in pref: + role = self._("after") + " " + date + if "bef" in pref: + role = self._("before") + " " + date + if pref in ("abt", "about"): + role = self._("about") + " " + date + if "c" in pref: + role = self._("circa") + " " + date + if "around" in pref: + role = self._("around") + " " + date + # parse is done in the default language date = _dp.parse(role) - date = self.rlocale.get_date(date) - role = " (%s) " % date + # reset the date to the original calendar + cdate = date.to_calendar(Date.calendar_names[int(cal)]) + ldate = self.rlocale.get_date(cdate) + role = " (%s) " % ldate else: role = " (%s) " % self._(role) ordered += list_html diff --git a/gramps/plugins/webreport/narrativeweb.py b/gramps/plugins/webreport/narrativeweb.py index 7ffecc697..648a0a395 100644 --- a/gramps/plugins/webreport/narrativeweb.py +++ b/gramps/plugins/webreport/narrativeweb.py @@ -845,7 +845,12 @@ class NavWebReport(Report): if self.reference_sort: role_or_date = name else: - role_or_date = str(event.get_date_object()) + date = event.get_date_object() + # calendar is the original date calendar + calendar = str(date.get_calendar()) + # convert date to gregorian for a correct sort + _date = str(date.to_calendar("gregorian")) + role_or_date = calendar + ":" + _date else: role_or_date = "" place_fname = self.build_url_fname(place_handle, "plc", diff --git a/gramps/plugins/webreport/webcal.py b/gramps/plugins/webreport/webcal.py index ea4942325..922a74264 100644 --- a/gramps/plugins/webreport/webcal.py +++ b/gramps/plugins/webreport/webcal.py @@ -596,7 +596,8 @@ class WebCalReport(Report): # Note. We use '/' here because it is a URL, not a OS # dependent pathname need to leave home link alone, # so look for it ... - url_fname = url_fname.lower() + if nav_text != _("Home"): + url_fname = url_fname.lower() url = url_fname add_subdirs = False if not (url.startswith('http:') or url.startswith('/')):