Setting the year as an ordinal number in Croatian

When I started investigating 10822 I saw some Croatian dates
didn't seem to be working in 5.0.0, to my surprise.  There
seems to have been some kind of regression from 4.2.8.

But the Croatian translation for gramps hasn't been updated
in about three years -- except by non-Croatians.  So I don't
know why some "translated" strings which control how dates
are displayed were disabled (marked as "fuzzy") in this:
6c67053e1f

Also, I saw some code in the 4.2.8 Croatian date handler
which was not in the 5.0.0 Croatian date handler -- somehow.

So I believe this commit fixes the Croatian date handler.

Issue #10822
This commit is contained in:
Paul Franklin 2018-10-01 10:59:51 -07:00
parent 896b77a165
commit 69aaec11a5
3 changed files with 59 additions and 19 deletions

View File

@ -79,6 +79,18 @@ class DateParserHR(DateParser):
#~ 'персидский' : Date.CAL_PERSIAN,
#~ 'п' : Date.CAL_PERSIAN,
#~ })
# match 'Day. MONTH year.' format with or without dots
self._text2 = re.compile(r'(\d+)?\.?\s*?%s\.?\s*((\d+)(/\d+)?)?\s*\.?$'
% self._mon_str, re.IGNORECASE)
# match Day.Month.Year.
self._numeric = re.compile(
r"((\d+)[/\. ])?\s*((\d+)[/\.])?\s*(\d+)\.?$")
self._jtext2 = re.compile(r'(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?'
% self._jmon_str, re.IGNORECASE)
_span_1 = ['od']
_span_2 = ['do']
_range_1 = ['između']
@ -105,11 +117,35 @@ class DateDisplayHR(DateDisplay):
display = DateDisplay.display_formatted
def format_short_month_year(self, month, year, inflect, short_months):
""" Allow a subclass to modify the year, e.g. add a period """
if not hasattr(short_months[1], 'f'): # not a Lexeme: no inflection
return "{short_month} {year}.".format(
short_month = short_months[month], year = year)
return self.FORMATS_short_month_year[inflect].format(
short_month = short_months[month], year = year)
def _get_localized_year(self, year):
""" Allow a subclass to modify the year, e.g. add a period """
return year + '.'
# FIXME probably there should be a Croatian-specific "formats" (and this
# ("American comma") format (and dd_dformat03 too) should be eliminated)
def dd_dformat02(self, date_val, inflect, long_months):
""" month_name day, year """
return DateDisplay.dd_dformat02(
self, date_val, inflect, long_months).replace(' .', '')
def dd_dformat04(self, date_val, inflect, long_months):
""" day month_name year """
return DateDisplay.dd_dformat04(
self, date_val, inflect, long_months).replace(' .', '')
#-------------------------------------------------------------------------
#
# Register classes
#
#-------------------------------------------------------------------------
register_datehandler(
('hr_HR', 'hr', 'HR', 'croatian', 'Croatian', 'hrvatski', ('%d.%m.%Y',)),
('hr_HR', 'hr', 'HR', 'croatian', 'Croatian', 'hrvatski', ('%d.%m.%Y.',)),
DateParserHR, DateDisplayHR)

View File

@ -585,6 +585,10 @@ class DateDisplay:
w_day = datetime.date(date_val[2], date_val[1], date_val[0]) # y, m, d
return self.long_days[((w_day.weekday() + 1) % 7) + 1]
def _get_localized_year(self, year):
""" Allow a subclass to modify the year, e.g. add a period """
return year
def dd_dformat01(self, date_val):
"""
numerical
@ -596,7 +600,7 @@ class DateDisplay:
return self.display_iso(date_val)
else:
if date_val[0] == date_val[1] == 0:
return str(date_val[2])
return self._get_localized_year(str(date_val[2]))
else:
value = self.dhformat.replace('%m', str(date_val[1]))
if '%b' in value or '%B' in value:
@ -634,7 +638,7 @@ class DateDisplay:
year = self._slash_year(date_val[2], date_val[3])
if date_val[0] == 0:
if date_val[1] == 0:
return year
return self._get_localized_year(year)
else:
return self.format_long_month_year(date_val[1], year,
inflect, long_months)
@ -660,7 +664,7 @@ class DateDisplay:
year = self._slash_year(date_val[2], date_val[3])
if date_val[0] == 0:
if date_val[1] == 0:
return year
return self._get_localized_year(year)
else:
return self.format_short_month_year(date_val[1], year,
inflect, short_months)
@ -686,7 +690,7 @@ class DateDisplay:
year = self._slash_year(date_val[2], date_val[3])
if date_val[0] == 0:
if date_val[1] == 0:
return year
return self._get_localized_year(year)
else:
return self.format_long_month_year(date_val[1], year,
inflect, long_months)
@ -712,7 +716,7 @@ class DateDisplay:
year = self._slash_year(date_val[2], date_val[3])
if date_val[0] == 0:
if date_val[1] == 0:
return year
return self._get_localized_year(year)
else:
return self.format_short_month_year(date_val[1], year,
inflect, short_months)

View File

@ -5,7 +5,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: Gramps 4.2\n"
"Project-Id-Version: Gramps 5.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-05-20 09:31-0500\n"
"PO-Revision-Date: 2015-07-13 23:42+0100\n"
@ -2080,7 +2080,7 @@ msgstr "D MMM GGGG"
#. to learn how to select proper inflection for your language.
#: ../gramps/gen/datehandler/_datedisplay.py:181
#: ../gramps/plugins/drawreport/calendarreport.py:233
#, fuzzy, python-brace-format
#, python-format
msgid "{long_month} {year}"
msgstr "{long_month.f[G]} {year}."
@ -2090,7 +2090,7 @@ msgstr "{long_month.f[G]} {year}."
#. (where X is one of the month-name inflections you defined)
#. else leave it untranslated
#: ../gramps/gen/datehandler/_datedisplay.py:189
#, fuzzy, python-brace-format
#, python-format
msgid "from|{long_month} {year}"
msgstr "{long_month.f[G]} {year}."
@ -2100,7 +2100,7 @@ msgstr "{long_month.f[G]} {year}."
#. (where X is one of the month-name inflections you defined)
#. else leave it untranslated
#: ../gramps/gen/datehandler/_datedisplay.py:197
#, fuzzy, python-brace-format
#, python-format
msgid "to|{long_month} {year}"
msgstr "{long_month.f[G]} {year}."
@ -2110,7 +2110,7 @@ msgstr "{long_month.f[G]} {year}."
#. (where X is one of the month-name inflections you defined)
#. else leave it untranslated
#: ../gramps/gen/datehandler/_datedisplay.py:205
#, fuzzy, python-brace-format
#, python-format
msgid "between|{long_month} {year}"
msgstr "{long_month.f[G]} {year}."
@ -2120,7 +2120,7 @@ msgstr "{long_month.f[G]} {year}."
#. (where X is one of the month-name inflections you defined)
#. else leave it untranslated
#: ../gramps/gen/datehandler/_datedisplay.py:213
#, fuzzy, python-brace-format
#, python-format
msgid "and|{long_month} {year}"
msgstr "{long_month.f[G]} {year}."
@ -2129,7 +2129,7 @@ msgstr "{long_month.f[G]} {year}."
#. (where X is one of the month-name inflections you defined)
#. else leave it untranslated
#: ../gramps/gen/datehandler/_datedisplay.py:220
#, fuzzy, python-brace-format
#, python-format
msgid "before|{long_month} {year}"
msgstr "{long_month.f[G]} {year}."
@ -2138,7 +2138,7 @@ msgstr "{long_month.f[G]} {year}."
#. (where X is one of the month-name inflections you defined)
#. else leave it untranslated
#: ../gramps/gen/datehandler/_datedisplay.py:227
#, fuzzy, python-brace-format
#, python-format
msgid "after|{long_month} {year}"
msgstr "{long_month.f[G]} {year}."
@ -2147,7 +2147,7 @@ msgstr "{long_month.f[G]} {year}."
#. (where X is one of the month-name inflections you defined)
#. else leave it untranslated
#: ../gramps/gen/datehandler/_datedisplay.py:234
#, fuzzy, python-brace-format
#, python-format
msgid "about|{long_month} {year}"
msgstr "{long_month.f[G]} {year}."
@ -2156,7 +2156,7 @@ msgstr "{long_month.f[G]} {year}."
#. (where X is one of the month-name inflections you defined)
#. else leave it untranslated
#: ../gramps/gen/datehandler/_datedisplay.py:241
#, fuzzy, python-brace-format
#, python-format
msgid "estimated|{long_month} {year}"
msgstr "{long_month.f[G]} {year}."
@ -2165,7 +2165,7 @@ msgstr "{long_month.f[G]} {year}."
#. (where X is one of the month-name inflections you defined)
#. else leave it untranslated
#: ../gramps/gen/datehandler/_datedisplay.py:248
#, fuzzy, python-brace-format
#, python-format
msgid "calculated|{long_month} {year}"
msgstr "{long_month.f[G]} {year}."
@ -2276,7 +2276,7 @@ msgstr "to"
#: ../gramps/gen/datehandler/_datedisplay.py:433
#, python-brace-format
msgid "{date_quality}from {date_start} to {date_stop}{nonstd_calendar_and_ny}"
msgstr "{date_quality} od {date_start} do {date_stop}{nonstd_calendar_and_ny}"
msgstr "{date_quality}od {date_start} do {date_stop}{nonstd_calendar_and_ny}"
#. If there is no special inflection for "between <Month>"
#. in your language, DON'T translate this string. Otherwise,
@ -2297,7 +2297,7 @@ msgstr "and"
msgid ""
"{date_quality}between {date_start} and {date_stop}{nonstd_calendar_and_ny}"
msgstr ""
"{date_quality} između {date_start} i {date_stop}{nonstd_calendar_and_ny}"
"{date_quality}između {date_start} i {date_stop}{nonstd_calendar_and_ny}"
#. If there is no special inflection for "before <Month>"
#. in your language, DON'T translate this string. Otherwise,