enhance Serbian date handler to handle Cyrillic dates

This commit is contained in:
Paul Franklin 2014-10-17 18:11:11 -07:00
parent 294e053212
commit a868efdeb0

View File

@ -230,46 +230,15 @@ class DateParserSR(DateParser):
# Serbian display # Serbian display
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
class DateDisplaySR_latin(DateDisplay): class DateDisplaySR_Base(DateDisplay):
""" """
Serbian (latin) date display class Serbian (base) date display class
""" """
long_months = ("",
"januara", "februara", "marta", "aprila",
"maja", "juna", "jula", "avgusta",
"septembra", "oktobra", "novembra", "decembra"
)
short_months = ("",
"jan", "feb", "mar", "apr", "maj", "jun",
"jul", "avg", "sep", "okt", "nov", "dec"
)
roman_months = ( roman_months = (
"", "I", "II", "III", "IV", "V", "VI", "", "I", "II", "III", "IV", "V", "VI",
"VII", "VIII", "IX", "X", "XI", "XII" "VII", "VIII", "IX", "X", "XI", "XII"
) )
calendar = (
"", "julijanski", "hebrejski",
"francuski republikanski", "persijski", "islamski",
"švedski"
)
_mod_str = ("", "pre ", "posle ", "oko ", "", "", "")
_qual_str = ("", "procenjeno ", "izračunato ")
_bce_str = "%s p.n.e."
formats = (
"GGGG-MM-DD (ISO-8601)",
"Numerički (DD.MM.GGGG.)",
"D. MMM GGGG.",
"D. Mesec GGGG.",
"D. Rb GGGG."
)
# this definition must agree with its "_display_gregorian" method
def _display_gregorian(self, date_val): def _display_gregorian(self, date_val):
""" """
@ -338,6 +307,10 @@ class DateDisplaySR_latin(DateDisplay):
newyear = date.get_new_year() newyear = date.get_new_year()
qual_str = self._qual_str[qual] qual_str = self._qual_str[qual]
span1 = self._span1
span2 = self._span2
range1 = self._range1
range2 = self._range2
if mod == Date.MOD_TEXTONLY: if mod == Date.MOD_TEXTONLY:
return date.get_text() return date.get_text()
@ -347,13 +320,13 @@ class DateDisplaySR_latin(DateDisplay):
d_1 = self.display_cal[cal](start) d_1 = self.display_cal[cal](start)
d_2 = self.display_cal[cal](date.get_stop_date()) d_2 = self.display_cal[cal](date.get_stop_date())
scal = self.format_extras(cal, newyear) scal = self.format_extras(cal, newyear)
return "%s%s %s %s %s%s" % (qual_str, 'od', d_1, 'do', d_2, return "%s%s %s %s %s%s" % (qual_str, span1, d_1, span2, d_2,
scal) scal)
elif mod == Date.MOD_RANGE: elif mod == Date.MOD_RANGE:
d_1 = self.display_cal[cal](start) d_1 = self.display_cal[cal](start)
d_2 = self.display_cal[cal](date.get_stop_date()) d_2 = self.display_cal[cal](date.get_stop_date())
scal = self.format_extras(cal, newyear) scal = self.format_extras(cal, newyear)
return "%s%s %s %s %s%s" % (qual_str, 'između', d_1, 'i', d_2, return "%s%s %s %s %s%s" % (qual_str, range1, d_1, range2, d_2,
scal) scal)
else: else:
text = self.display_cal[date.get_calendar()](start) text = self.display_cal[date.get_calendar()](start)
@ -361,11 +334,98 @@ class DateDisplaySR_latin(DateDisplay):
return "%s%s%s%s" % (qual_str, self._mod_str[mod], text, return "%s%s%s%s" % (qual_str, self._mod_str[mod], text,
scal) scal)
class DateDisplaySR_Latin(DateDisplaySR_Base):
"""
Serbian (Latin) date display class
"""
long_months = ("",
"januara", "februara", "marta", "aprila",
"maja", "juna", "jula", "avgusta",
"septembra", "oktobra", "novembra", "decembra"
)
short_months = ("",
"jan", "feb", "mar", "apr", "maj", "jun",
"jul", "avg", "sep", "okt", "nov", "dec"
)
calendar = (
"", "julijanski", "hebrejski",
"francuski republikanski", "persijski", "islamski",
"švedski"
)
_mod_str = ("", "pre ", "posle ", "oko ", "", "", "")
_qual_str = ("", "procenjeno ", "izračunato ")
_bce_str = "%s p.n.e."
formats = (
"GGGG-MM-DD (ISO-8601)",
"Numerički (DD.MM.GGGG.)",
"D. MMM GGGG.",
"D. Mesec GGGG.",
"D. Rb GGGG."
)
# this definition must agree with its "_display_gregorian" method
_span1 = 'od'
_span2 = 'do'
_range1 = 'između'
_range2 = 'i'
class DateDisplaySR_Cyrillic(DateDisplaySR_Base):
"""
Serbian (Cyrillic) date display class
"""
long_months = ("",
"Јануар", "Фебруар", "Март", "Април",
"Мај", "Јуне", "Јули", "Аугуст",
"Септембар", "Оцтобер", "Новембер", "Децембар"
)
short_months = ("",
"Јан", "Феб", "Мар", "Апр", "Мај", "Јун",
"Јул", "Авг", "Сеп", "Окт", "Нов", "Дец"
)
calendar = (
"", "Јулиан", "хебрејски",
"француски републиканац", "Персиан", "исламски",
"шведски"
)
_mod_str = ("", "пре ", "после ", "око ", "", "", "")
_qual_str = ("", "процењено ", "израчунато ")
_bce_str = "%s п.н.е."
formats = (
"ГГГГ-ММ-ДД (ISO-8601)",
"Нумеричка (ДД.ММ.ГГГГ.)",
"Д. МММ ГГГГ.",
"Д. Месец ГГГГ.",
"Д. Rb ГГГГ."
)
# this definition must agree with its "_display_gregorian" method
_span1 = 'из'
_span2 = 'до'
_range1 = 'између'
_range2 = 'и'
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
# Register classes # Register classes
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
register_datehandler(('sr', 'serbian', 'srpski', 'sr_RS'), register_datehandler(('srpski', 'Srpski',
DateParserSR, DateDisplaySR_latin) 'sr_Latn', 'sr_Latn_RS', 'sr_RS@latin'),
DateParserSR, DateDisplaySR_Latin)
register_datehandler(('sr', 'српски', 'Српски', 'serbian',
'sr_RS', 'sr_Cyrl', 'sr_Cyrl_RS'),
DateParserSR, DateDisplaySR_Cyrillic)