enhance Serbian date handler to handle Cyrillic dates
This commit is contained in:
		@@ -230,47 +230,16 @@ 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):
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
        display gregorian calendar date in different format
 | 
					        display gregorian calendar date in different format
 | 
				
			||||||
@@ -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)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user