fixed finnish date display

svn: r4451
This commit is contained in:
Eero Tamminen
2005-05-01 18:56:13 +00:00
parent 8727e99353
commit 0612243444
2 changed files with 55 additions and 33 deletions

View File

@@ -1,3 +1,7 @@
2005-05-01 Eero Tamminen <eerot@sf>
* src/dates/Date_fi.py: Fixed Display class + other changes.
Parser is waiting for Gramps DateParser.py update
2005-04-28 Alex Roitman <shura@gramps-project.org> 2005-04-28 Alex Roitman <shura@gramps-project.org>
* src/EditPlace.py (on_add_url_clicked,on_update_url_clicked): * src/EditPlace.py (on_add_url_clicked,on_update_url_clicked):
Use empty name when not available. Use empty name when not available.

View File

@@ -45,10 +45,21 @@ from DateDisplay import DateDisplay
# #
# Finnish parser # Finnish parser
# #
# This handles only dates where days and months are given as numeric, as:
# - That's how they are normally used in Finland
# - Parsing Finnish is much more complicated than English
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
class DateParserFI(DateParser): class DateParserFI(DateParser):
# NOTE: these need to be in lower case because the "key" comparison
# is done as lower case. In the display method correct capitalization
# can be used.
modifier_to_int = { modifier_to_int = {
# examples:
# - ennen 1.1.2005
# - 1.1.2005 jälkeen
# - noin 1.1.2005
u'ennen' : Date.MOD_BEFORE, u'ennen' : Date.MOD_BEFORE,
u'e.' : Date.MOD_BEFORE, u'e.' : Date.MOD_BEFORE,
u'jälkeen' : Date.MOD_AFTER, u'jälkeen' : Date.MOD_AFTER,
@@ -57,6 +68,8 @@ class DateParserFI(DateParser):
u'n.' : Date.MOD_ABOUT, u'n.' : Date.MOD_ABOUT,
} }
bce = ["ekr", "ekr\."]
calendar_to_int = { calendar_to_int = {
u'gregoriaaninen' : Date.CAL_GREGORIAN, u'gregoriaaninen' : Date.CAL_GREGORIAN,
u'greg.' : Date.CAL_GREGORIAN, u'greg.' : Date.CAL_GREGORIAN,
@@ -73,23 +86,18 @@ class DateParserFI(DateParser):
} }
quality_to_int = { quality_to_int = {
u'arvioitu' : Date.QUAL_ESTIMATED, u'arviolta' : Date.QUAL_ESTIMATED,
u'arv.' : Date.QUAL_ESTIMATED, u'arv.' : Date.QUAL_ESTIMATED,
u'laskettu' : Date.QUAL_CALCULATED, u'laskettuna' : Date.QUAL_CALCULATED,
u'lask.' : Date.QUAL_CALCULATED, u'lask.' : Date.QUAL_CALCULATED,
} }
def init_strings(self): def init_strings(self):
DateParser.init_strings(self) DateParser.init_strings(self)
_span_1 = [u'de'] # date, whitespace
_span_2 = [u'a'] self._span = re.compile("(?P<start>.+)\s+-\s+(?P<stop>.+)",
_range_1 = [u'ent.',u'ent',u'entre']
_range_2 = [u'y']
self._span = re.compile("(%s)\s+(.+)\s+(%s)\s+(.+)" %
('|'.join(_span_1),'|'.join(_span_2)),
re.IGNORECASE) re.IGNORECASE)
self._range = re.compile("(%s)\s+(.+)\s+(%s)\s+(.+)" % self._range = re.compile("(?P<start>.+)\s+ja\s+(?P<stop>.+)\s+väliltä",
('|'.join(_range_1),'|'.join(_range_2)),
re.IGNORECASE) re.IGNORECASE)
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
@@ -100,23 +108,17 @@ class DateParserFI(DateParser):
class DateDisplayFI(DateDisplay): class DateDisplayFI(DateDisplay):
calendar = ("", calendar = ("",
u" (Juliaaninen)", u"(Juliaaninen)",
u" (Heprealainen)", u"(Heprealainen)",
u" (Ranskan v.)", u"(Ranskan v.)",
u" (Persialainen)", u"(Persialainen)",
u" (Islamilainen)") u"(Islamilainen)")
_mod_str = ("", u"ennen ", u"jälkeen ", u"noin ", "", "", "") _qual_str = ("", "laskettuna", "arviolta")
_qual_str = ("", "laskettu ", "arvioitu ")
formats = ( formats = (
"VVVV-KK-PP (ISO)", "VVVV-KK-PP (ISO)",
"Numeroina", "PP.KK.VVVV"
"Kuukausi Päivä, Vuosi",
"KUUKAUSI Päivä, Vuosi",
"Päivä Kuukausi, Vuosi",
"Päivä KUUKAUSI, Vuosi"
) )
def display(self,date): def display(self,date):
@@ -124,27 +126,43 @@ class DateDisplayFI(DateDisplay):
Returns a text string representing the date. Returns a text string representing the date.
""" """
mod = date.get_modifier() mod = date.get_modifier()
cal = date.get_calendar()
qual = date.get_quality() qual = date.get_quality()
cal = date.get_calendar()
start = date.get_start_date() start = date.get_start_date()
qual_str = self._qual_str[qual]
if mod == Date.MOD_TEXTONLY: if mod == Date.MOD_TEXTONLY:
return date.get_text() return date.get_text()
elif start == Date.EMPTY: if start == Date.EMPTY:
return "" return ""
elif mod == Date.MOD_SPAN:
# select numerical date format
self.format = 1
if mod == Date.MOD_SPAN:
d1 = self.display_cal[cal](start) d1 = self.display_cal[cal](start)
d2 = self.display_cal[cal](date.get_stop_date()) d2 = self.display_cal[cal](date.get_stop_date())
return "%s%s %s %s %s%s" % (qual_str,u'de',d1,u'a',d2,self.calendar[cal]) text = "%s - %s" % (d1, d2)
elif mod == Date.MOD_RANGE: elif mod == Date.MOD_RANGE:
d1 = self.display_cal[cal](start) d1 = self.display_cal[cal](start)
d2 = self.display_cal[cal](date.get_stop_date()) d2 = self.display_cal[cal](date.get_stop_date())
return "%s%s %s %s %s%s" % (qual_str,u'entre',d1,u'y',d2,self.calendar[cal]) text = "%s ja %s väliltä" % (d1, d2)
else: else:
text = self.display_cal[date.get_calendar()](start) text = self.display_cal[date.get_calendar()](start)
return "%s%s%s%s" % (qual_str,self._mod_str[mod],text,self.calendar[cal]) if mod == Date.MOD_BEFORE:
text = "ennen " + text
elif mod == Date.MOD_AFTER:
text = text + " jälkeen"
elif mod == Date.MOD_ABOUT:
text = "noin " + text
if qual:
# prepend quality
text = "%s %s" % (self._qual_str[qual], text)
if cal:
# append calendar type
text = "%s %s" % (text, self.calendar[cal])
return text
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #