Package parsedatetime :: Module pdt_locales
[hide private]
[frames] | no frames]

Source Code for Module parsedatetime.pdt_locales

  1  # -*- coding: utf-8 -*- 
  2  """ 
  3  pdt_locales 
  4   
  5  All of the included locale classes shipped with pdt. 
  6  """ 
  7   
  8  import datetime 
  9   
 10  try: 
 11     import PyICU as pyicu 
 12  except: 
 13     pyicu = None 
 14   
 15   
16 -def lcase(x):
17 return x.lower()
18 19
20 -class pdtLocale_base(object):
21 """ 22 default values for Locales 23 """ 24 locale_keys = set([ 25 'MonthOffsets', 'Months', 'WeekdayOffsets', 'Weekdays', 26 'dateFormats', 'dateSep', 'dayOffsets', 'dp_order', 27 'localeID', 'meridian', 'Modifiers', 're_sources', 're_values', 28 'shortMonths', 'shortWeekdays', 'timeFormats', 'timeSep', 'units', 29 'uses24', 'usesMeridian', 'numbers', 'small', 'magnitude', 'ignore']) 30
31 - def __init__(self):
32 self.localeID = None # don't use a unicode string 33 self.dateSep = [ '/', '.' ] 34 self.timeSep = [ ':' ] 35 self.meridian = [ 'AM', 'PM' ] 36 self.usesMeridian = True 37 self.uses24 = True 38 39 self.WeekdayOffsets = {} 40 self.MonthOffsets = {} 41 42 # always lowercase any lookup values - helper code expects that 43 self.Weekdays = [ 'monday', 'tuesday', 'wednesday', 44 'thursday', 'friday', 'saturday', 'sunday', 45 ] 46 self.shortWeekdays = [ 'mon', 'tues', 'wed', 47 'thu', 'fri', 'sat', 'sun', 48 ] 49 self.Months = [ 'january', 'february', 'march', 50 'april', 'may', 'june', 51 'july', 'august', 'september', 52 'october', 'november', 'december', 53 ] 54 self.shortMonths = [ 'jan', 'feb', 'mar', 55 'apr', 'may', 'jun', 56 'jul', 'aug', 'sep', 57 'oct', 'nov', 'dec', 58 ] 59 # use the same formats as ICU by default 60 self.dateFormats = { 'full': 'EEEE, MMMM d, yyyy', 61 'long': 'MMMM d, yyyy', 62 'medium': 'MMM d, yyyy', 63 'short': 'M/d/yy', 64 } 65 self.timeFormats = { 'full': 'h:mm:ss a z', 66 'long': 'h:mm:ss a z', 67 'medium': 'h:mm:ss a', 68 'short': 'h:mm a', 69 } 70 71 self.dp_order = [ 'm', 'd', 'y' ] 72 73 # Used to parse expressions like "in 5 hours" 74 self.numbers = { 'zero': 0, 'one': 1, 'a': 1, 'an': 1, 'two': 2, 'three': 3, 75 'four': 4, 'five': 5, 'six': 6, 'seven': 7, 'eight': 8, 76 'nine': 9, 'ten': 10, 'eleven': 11, 'twelve': 12, 77 'thirteen': 13, 'fourteen': 14, 'fifteen': 15, 'sixteen': 16, 78 'seventeen': 17, 'eighteen': 18, 'nineteen': 19, 79 'twenty': 20 } 80 81 82 # this will be added to re_values later 83 self.units = { 'seconds': [ 'second', 'seconds', 'sec', 's' ], 84 'minutes': [ 'minute', 'minutes', 'min', 'm' ], 85 'hours': [ 'hour', 'hours', 'hr', 'h' ], 86 'days': [ 'day', 'days', 'dy', 'd' ], 87 'weeks': [ 'week', 'weeks', 'wk', 'w' ], 88 'months': [ 'month', 'months', 'mth' ], 89 'years': [ 'year', 'years', 'yr', 'y' ], 90 } 91 92 # text constants to be used by later regular expressions 93 self.re_values = { 'specials': 'in|on|of|at', 94 'timeseperator': ':', 95 'rangeseperator': '-', 96 'daysuffix': 'rd|st|nd|th', 97 'meridian': 'am|pm|a.m.|p.m.|a|p', 98 'qunits': 'h|m|s|d|w|y', 99 'now': [ 'now' ], 100 } 101 102 # Used to adjust the returned date before/after the source 103 self.Modifiers = { 'from': 1, 104 'before': -1, 105 'after': 1, 106 'ago': -1, 107 'prior': -1, 108 'prev': -1, 109 'last': -1, 110 'next': 1, 111 'previous': -1, 112 'end of': 0, 113 'eod': 1, 114 'eom': 1, 115 'eoy': 1, 116 } 117 118 self.dayOffsets = { 'tomorrow': 1, 119 'today': 0, 120 'yesterday': -1, 121 } 122 123 # special day and/or times, i.e. lunch, noon, evening 124 # each element in the dictionary is a dictionary that is used 125 # to fill in any value to be replace - the current date/time will 126 # already have been populated by the method buildSources 127 self.re_sources = { 'noon': { 'hr': 12, 'mn': 0, 'sec': 0 }, 128 'afternoon': { 'hr': 13, 'mn': 0, 'sec': 0 }, 129 'lunch': { 'hr': 12, 'mn': 0, 'sec': 0 }, 130 'morning': { 'hr': 6, 'mn': 0, 'sec': 0 }, 131 'breakfast': { 'hr': 8, 'mn': 0, 'sec': 0 }, 132 'dinner': { 'hr': 19, 'mn': 0, 'sec': 0 }, 133 'evening': { 'hr': 18, 'mn': 0, 'sec': 0 }, 134 'midnight': { 'hr': 0, 'mn': 0, 'sec': 0 }, 135 'night': { 'hr': 21, 'mn': 0, 'sec': 0 }, 136 'tonight': { 'hr': 21, 'mn': 0, 'sec': 0 }, 137 'eod': { 'hr': 17, 'mn': 0, 'sec': 0 }, 138 } 139 140 self.small = {'zero': 0, 141 'one': 1, 142 'a': 1, 143 'an': 1, 144 'two': 2, 145 'three': 3, 146 'four': 4, 147 'five': 5, 148 'six': 6, 149 'seven': 7, 150 'eight': 8, 151 'nine': 9, 152 'ten': 10, 153 'eleven': 11, 154 'twelve': 12, 155 'thirteen': 13, 156 'fourteen': 14, 157 'fifteen': 15, 158 'sixteen': 16, 159 'seventeen': 17, 160 'eighteen': 18, 161 'nineteen': 19, 162 'twenty': 20, 163 'thirty': 30, 164 'forty': 40, 165 'fifty': 50, 166 'sixty': 60, 167 'seventy': 70, 168 'eighty': 80, 169 'ninety': 90 170 } 171 172 self.magnitude = {'thousand': 1000, 173 'million': 1000000, 174 'billion': 1000000000, 175 'trillion': 1000000000000, 176 'quadrillion': 1000000000000000, 177 'quintillion': 1000000000000000000, 178 'sextillion': 1000000000000000000000, 179 'septillion': 1000000000000000000000000, 180 'octillion': 1000000000000000000000000000, 181 'nonillion': 1000000000000000000000000000000, 182 'decillion': 1000000000000000000000000000000000, 183 } 184 185 self.ignore = ('and', ',')
186 187
188 -class pdtLocale_icu(pdtLocale_base):
189 """ 190 Create a locale from pyICU 191 """
192 - def __init__(self, localeID):
193 super( pdtLocale_icu, self ).__init__() 194 195 self.icu = None 196 197 if pyicu is not None: 198 if localeID is None: 199 localeID = 'en_US' 200 self.icu = pyicu.Locale(localeID) 201 202 if self.icu is not None: 203 # grab spelled out format of all numbers from 0 to 100 204 rbnf = pyicu.RuleBasedNumberFormat(pyicu.URBNFRuleSetTag.SPELLOUT, self.icu) 205 try: 206 self.numbers = dict([(rbnf.format(i), i) for i in xrange(0, 100)]) 207 except NameError: 208 self.numbers = dict([(rbnf.format(i), i) for i in range(0, 100)]) 209 210 self.symbols = pyicu.DateFormatSymbols(self.icu) 211 212 # grab ICU list of weekdays, skipping first entry which 213 # is always blank 214 wd = list(map(lcase, self.symbols.getWeekdays()[1:])) 215 swd = list(map(lcase, self.symbols.getShortWeekdays()[1:])) 216 217 # store them in our list with Monday first (ICU puts Sunday first) 218 self.Weekdays = wd[1:] + wd[0:1] 219 self.shortWeekdays = swd[1:] + swd[0:1] 220 self.Months = list(map(lcase, self.symbols.getMonths())) 221 self.shortMonths = list(map(lcase, self.symbols.getShortMonths())) 222 223 self.icu_df = { 'full': pyicu.DateFormat.createDateInstance(pyicu.DateFormat.kFull, self.icu), 224 'long': pyicu.DateFormat.createDateInstance(pyicu.DateFormat.kLong, self.icu), 225 'medium': pyicu.DateFormat.createDateInstance(pyicu.DateFormat.kMedium, self.icu), 226 'short': pyicu.DateFormat.createDateInstance(pyicu.DateFormat.kShort, self.icu), 227 } 228 self.icu_tf = { 'full': pyicu.DateFormat.createTimeInstance(pyicu.DateFormat.kFull, self.icu), 229 'long': pyicu.DateFormat.createTimeInstance(pyicu.DateFormat.kLong, self.icu), 230 'medium': pyicu.DateFormat.createTimeInstance(pyicu.DateFormat.kMedium, self.icu), 231 'short': pyicu.DateFormat.createTimeInstance(pyicu.DateFormat.kShort, self.icu), 232 } 233 self.dateFormats = { 'full': self.icu_df['full'].toPattern(), 234 'long': self.icu_df['long'].toPattern(), 235 'medium': self.icu_df['medium'].toPattern(), 236 'short': self.icu_df['short'].toPattern(), 237 } 238 self.timeFormats = { 'full': self.icu_tf['full'].toPattern(), 239 'long': self.icu_tf['long'].toPattern(), 240 'medium': self.icu_tf['medium'].toPattern(), 241 'short': self.icu_tf['short'].toPattern(), 242 } 243 244 am = '' 245 pm = '' 246 ts = '' 247 248 # ICU doesn't seem to provide directly the date or time seperator 249 # so we have to figure it out 250 o = self.icu_tf['short'] 251 s = self.timeFormats['short'] 252 253 self.usesMeridian = 'a' in s 254 self.uses24 = 'H' in s 255 256 # '11:45 AM' or '11:45' 257 s = o.format(datetime.datetime(2003, 10, 30, 11, 45)) 258 259 # ': AM' or ':' 260 s = s.replace('11', '').replace('45', '') 261 262 if len(s) > 0: 263 ts = s[0] 264 265 if self.usesMeridian: 266 # '23:45 AM' or '23:45' 267 am = s[1:].strip() 268 s = o.format(datetime.datetime(2003, 10, 30, 23, 45)) 269 270 if self.uses24: 271 s = s.replace('23', '') 272 else: 273 s = s.replace('11', '') 274 275 # 'PM' or '' 276 pm = s.replace('45', '').replace(ts, '').strip() 277 278 self.timeSep = [ ts ] 279 self.meridian = [ am, pm ] 280 281 o = self.icu_df['short'] 282 s = o.format(datetime.datetime(2003, 10, 30, 11, 45)) 283 s = s.replace('10', '').replace('30', '').replace('03', '').replace('2003', '') 284 285 if len(s) > 0: 286 ds = s[0] 287 else: 288 ds = '/' 289 290 self.dateSep = [ ds ] 291 s = self.dateFormats['short'] 292 l = s.lower().split(ds) 293 dp_order = [] 294 295 for s in l: 296 if len(s) > 0: 297 dp_order.append(s[:1]) 298 299 self.dp_order = dp_order
300 301
302 -class pdtLocale_en(pdtLocale_base):
303 """ 304 en_US Locale 305 """
306 - def __init__(self):
307 super( pdtLocale_en, self ).__init__() 308 309 self.localeID = 'en_US' # don't use a unicode string 310 self.uses24 = False
311 312
313 -class pdtLocale_au(pdtLocale_base):
314 """ 315 en_AU Locale 316 """
317 - def __init__(self):
318 super( pdtLocale_au, self ).__init__() 319 320 self.localeID = 'en_A' # don't use a unicode string 321 self.dateSep = [ '-', '/' ] 322 self.uses24 = False 323 324 self.dateFormats['full'] = 'EEEE, d MMMM yyyy' 325 self.dateFormats['long'] = 'd MMMM yyyy' 326 self.dateFormats['medium'] = 'dd/MM/yyyy' 327 self.dateFormats['short'] = 'd/MM/yy' 328 329 self.timeFormats['long'] = self.timeFormats['full'] 330 331 self.dp_order = [ 'd', 'm', 'y' ]
332 333
334 -class pdtLocale_es(pdtLocale_base):
335 """ 336 es Locale 337 338 Note that I don't speak Spanish so many of the items below are still in English 339 """
340 - def __init__(self):
341 super( pdtLocale_es, self ).__init__() 342 343 self.localeID = 'es' # don't use a unicode string 344 self.dateSep = [ '/' ] 345 self.usesMeridian = False 346 self.uses24 = True 347 348 self.Weekdays = [ 'lunes', 'martes', 'mi\xe9rcoles', 349 'jueves', 'viernes', 's\xe1bado', 'domingo', 350 ] 351 self.shortWeekdays = [ 'lun', 'mar', 'mi\xe9', 352 'jue', 'vie', 's\xe1b', 'dom', 353 ] 354 self.Months = [ 'enero', 'febrero', 'marzo', 355 'abril', 'mayo', 'junio', 356 'julio', 'agosto', 'septiembre', 357 'octubre', 'noviembre', 'diciembre' 358 ] 359 self.shortMonths = [ 'ene', 'feb', 'mar', 360 'abr', 'may', 'jun', 361 'jul', 'ago', 'sep', 362 'oct', 'nov', 'dic' 363 ] 364 self.dateFormats['full'] = "EEEE d' de 'MMMM' de 'yyyy" 365 self.dateFormats['long'] = "d' de 'MMMM' de 'yyyy" 366 self.dateFormats['medium'] = "dd-MMM-yy" 367 self.dateFormats['short'] = "d/MM/yy" 368 369 self.timeFormats['full'] = "HH'H'mm' 'ss z" 370 self.timeFormats['long'] = "HH:mm:ss z" 371 self.timeFormats['medium'] = "HH:mm:ss" 372 self.timeFormats['short'] = "HH:mm" 373 374 self.dp_order = [ 'd', 'm', 'y' ]
375 376
377 -class pdtLocale_ptBR(pdtLocale_base):
378 """ 379 pt_BR Locale 380 381 """
382 - def __init__(self):
383 super( pdtLocale_ptBR, self ).__init__() 384 385 self.localeID = 'pt_BR' # don't use a unicode string 386 self.dateSep = [ '/' ] 387 self.usesMeridian = False 388 self.uses24 = True 389 390 self.Weekdays = [ 'segunda-feira', 'ter\xe7a-feira', 'quarta-feira', 391 'quinta-feira', 'sexta-feira', 's\xe1bado', 'domingo', 392 ] 393 self.shortWeekdays = [ 'seg', 'ter', 'qua', 394 'qui', 'sex', 's\xe1b', 'dom', 395 ] 396 self.Months = [ 'janeiro', 'fevereiro', 'mar\xe7o', 397 'abril', 'maio', 'junho', 398 'julho', 'agosto', 'setembro', 399 'outubro', 'novembro', 'dezembro' 400 ] 401 self.shortMonths = [ 'jan', 'fev', 'mar', 402 'abr', 'mai', 'jun', 403 'jul', 'ago', 'set', 404 'out', 'nov', 'dez' 405 ] 406 self.dateFormats['full'] = "EEEE, d' de 'MMMM' de 'yyyy" 407 self.dateFormats['long'] = "d' de 'MMMM' de 'yyyy" 408 self.dateFormats['medium'] = "dd-MM-yy" 409 self.dateFormats['short'] = "dd/MM/yyyy" 410 411 self.timeFormats['full'] = "HH'H'mm' 'ss z" 412 self.timeFormats['long'] = "HH:mm:ss z" 413 self.timeFormats['medium'] = "HH:mm:ss" 414 self.timeFormats['short'] = "HH:mm" 415 416 self.dp_order = [ 'd', 'm', 'y' ] 417 418 self.units['seconds'] = [ 'segundo', 'seg', 's'] 419 self.units['minutes'] = [ 'minuto', 'min', 'm'] 420 self.units['days'] = [ 'dia', 'dias', 'd'] 421 self.units['months'] = [ 'm\xeas', 'meses']
422 423
424 -class pdtLocale_de(pdtLocale_base):
425 """ 426 de_DE Locale constants 427 428 Contributed by Debian parsedatetime package maintainer Bernd Zeimetz <bzed@debian.org> 429 """
430 - def __init__(self):
431 super( pdtLocale_de, self ).__init__() 432 433 self.localeID = 'de_DE' # don't use a unicode string 434 self.dateSep = [ '.' ] 435 self.timeSep = [ ':' ] 436 self.meridian = [ ] 437 self.usesMeridian = False 438 self.uses24 = True 439 440 self.Weekdays = [ 'montag', 'dienstag', 'mittwoch', 441 'donnerstag', 'freitag', 'samstag', 'sonntag', 442 ] 443 self.shortWeekdays = [ 'mo', 'di', 'mi', 444 'do', 'fr', 'sa', 'so', 445 ] 446 self.Months = [ 'januar', 'februar', 'm\xe4rz', 447 'april', 'mai', 'juni', 448 'juli', 'august', 'september', 449 'oktober', 'november', 'dezember', 450 ] 451 self.shortMonths = [ 'jan', 'feb', 'mrz', 452 'apr', 'mai', 'jun', 453 'jul', 'aug', 'sep', 454 'okt', 'nov', 'dez', 455 ] 456 self.dateFormats['full'] = 'EEEE, d. MMMM yyyy' 457 self.dateFormats['long'] = 'd. MMMM yyyy' 458 self.dateFormats['medium'] = 'dd.MM.yyyy' 459 self.dateFormats['short'] = 'dd.MM.yy' 460 461 self.timeFormats['full'] = 'HH:mm:ss v' 462 self.timeFormats['long'] = 'HH:mm:ss z' 463 self.timeFormats['medium'] = 'HH:mm:ss' 464 self.timeFormats['short'] = 'HH:mm' 465 466 self.dp_order = [ 'd', 'm', 'y' ] 467 468 self.units['seconds'] = [ 'sekunden', 'sek', 's' ] 469 self.units['minutes'] = [ 'minuten', 'min' , 'm' ] 470 self.units['hours'] = [ 'stunden', 'std', 'h' ] 471 self.units['days'] = [ 'tag', 'tage', 't' ] 472 self.units['weeks'] = [ 'wochen', 'w' ] 473 self.units['months'] = [ 'monat', 'monate' ] #the short version would be a capital M, 474 #as I understand it we can't distinguish 475 #between m for minutes and M for months. 476 self.units['years'] = [ 'jahr', 'jahre', 'j' ] 477 478 self.re_values['specials'] = 'am|dem|der|im|in|den|zum' 479 self.re_values['timeseperator'] = ':' 480 self.re_values['rangeseperator'] = '-' 481 self.re_values['daysuffix'] = '' 482 self.re_values['qunits'] = 'h|m|s|t|w|m|j' 483 self.re_values['now'] = [ 'jetzt' ] 484 485 # Used to adjust the returned date before/after the source 486 #still looking for insight on how to translate all of them to german. 487 self.Modifiers['from'] = 1 488 self.Modifiers['before'] = -1 489 self.Modifiers['after'] = 1 490 self.Modifiers['vergangener'] = -1 491 self.Modifiers['vorheriger'] = -1 492 self.Modifiers['prev'] = -1 493 self.Modifiers['letzter'] = -1 494 self.Modifiers['n\xe4chster'] = 1 495 self.Modifiers['dieser'] = 0 496 self.Modifiers['previous'] = -1 497 self.Modifiers['in a'] = 2 498 self.Modifiers['end of'] = 0 499 self.Modifiers['eod'] = 0 500 self.Modifiers['eo'] = 0 501 502 #morgen/abermorgen does not work, see http://code.google.com/p/parsedatetime/issues/detail?id=19 503 self.dayOffsets['morgen'] = 1 504 self.dayOffsets['heute'] = 0 505 self.dayOffsets['gestern'] = -1 506 self.dayOffsets['vorgestern'] = -2 507 self.dayOffsets['\xfcbermorgen'] = 2 508 509 # special day and/or times, i.e. lunch, noon, evening 510 # each element in the dictionary is a dictionary that is used 511 # to fill in any value to be replace - the current date/time will 512 # already have been populated by the method buildSources 513 self.re_sources['mittag'] = { 'hr': 12, 'mn': 0, 'sec': 0 } 514 self.re_sources['mittags'] = { 'hr': 12, 'mn': 0, 'sec': 0 } 515 self.re_sources['mittagessen'] = { 'hr': 12, 'mn': 0, 'sec': 0 } 516 self.re_sources['morgen'] = { 'hr': 6, 'mn': 0, 'sec': 0 } 517 self.re_sources['morgens'] = { 'hr': 6, 'mn': 0, 'sec': 0 } 518 self.re_sources[r'fr\e4hst\xe4ck'] = { 'hr': 8, 'mn': 0, 'sec': 0 } 519 self.re_sources['abendessen'] = { 'hr': 19, 'mn': 0, 'sec': 0 } 520 self.re_sources['abend'] = { 'hr': 18, 'mn': 0, 'sec': 0 } 521 self.re_sources['abends'] = { 'hr': 18, 'mn': 0, 'sec': 0 } 522 self.re_sources['mitternacht'] = { 'hr': 0, 'mn': 0, 'sec': 0 } 523 self.re_sources['nacht'] = { 'hr': 21, 'mn': 0, 'sec': 0 } 524 self.re_sources['nachts'] = { 'hr': 21, 'mn': 0, 'sec': 0 } 525 self.re_sources['heute abend'] = { 'hr': 21, 'mn': 0, 'sec': 0 } 526 self.re_sources['heute nacht'] = { 'hr': 21, 'mn': 0, 'sec': 0 } 527 self.re_sources['feierabend'] = { 'hr': 17, 'mn': 0, 'sec': 0 }
528
529 -class pdtLocale_nl(pdtLocale_base):
530 """ 531 nl_NL Locale constants 532 533 Contributed by Dirkjan Krijnders <dirkjan@krijnders.net> 534 """
535 - def __init__(self):
536 super( pdtLocale_nl, self ).__init__() 537 538 self.localeID = 'nl_NL' # don't use a unicode string 539 self.dateSep = [ '-' , '/'] 540 self.timeSep = [ ':' ] 541 self.meridian = [ ] 542 self.usesMeridian = False 543 self.uses24 = True 544 545 self.Weekdays = [ 'maandag', 'dinsdag', 'woensdag', 546 'donderdag', 'vrijdag', 'zaterdag', 'zondag', 547 ] 548 self.shortWeekdays = [ 'ma', 'di', 'wo', 549 'do', 'vr', 'za', 'zo', 550 ] 551 self.Months = [ 'januari', 'februari', 'maart', 552 'april', 'mei', 'juni', 553 'juli', 'augustus', 'september', 554 'oktober', 'november', 'december', 555 ] 556 self.shortMonths = [ 'jan', 'feb', 'mar', 557 'apr', 'mei', 'jun', 558 'jul', 'aug', 'sep', 559 'okt', 'nov', 'dec', 560 ] 561 self.dateFormats['full'] = 'EEEE, dd MMMM yyyy' 562 self.dateFormats['long'] = 'dd MMMM yyyy' 563 self.dateFormats['medium'] = 'dd-MM-yyyy' 564 self.dateFormats['short'] = 'dd-MM-yy' 565 566 self.timeFormats['full'] = 'HH:mm:ss v' 567 self.timeFormats['long'] = 'HH:mm:ss z' 568 self.timeFormats['medium'] = 'HH:mm:ss' 569 self.timeFormats['short'] = 'HH:mm' 570 571 self.dp_order = [ 'd', 'm', 'y' ] 572 573 self.units['seconds'] = [ 'secunden', 'sec', 's' ] 574 self.units['minutes'] = [ 'minuten', 'min' , 'm' ] 575 self.units['hours'] = [ 'uren', 'uur', 'h' ] 576 self.units['days'] = [ 'dagen', 'dag', 'd' ] 577 self.units['weeks'] = [ 'weken', 'w' ] 578 self.units['months'] = [ 'maanden', 'maand' ] #the short version would be a capital M, 579 #as I understand it we can't distinguish 580 #between m for minutes and M for months. 581 self.units['years'] = [ 'jaar', 'jaren', 'j' ] 582 583 self.re_values['specials'] = 'om' 584 self.re_values['timeseperator'] = ':' 585 self.re_values['rangeseperator'] = '-' 586 self.re_values['daysuffix'] = ' |de' 587 self.re_values['qunits'] = 'h|m|s|d|w|m|j' 588 self.re_values['now'] = [ 'nu' ] 589 590 # Used to adjust the returned date before/after the source 591 #still looking for insight on how to translate all of them to german. 592 self.Modifiers['vanaf'] = 1 593 self.Modifiers['voor'] = -1 594 self.Modifiers['na'] = 1 595 self.Modifiers['vorige'] = -1 596 self.Modifiers['eervorige'] = -1 597 self.Modifiers['prev'] = -1 598 self.Modifiers['laastste'] = -1 599 self.Modifiers['volgende'] = 1 600 self.Modifiers['deze'] = 0 601 self.Modifiers['vorige'] = -1 602 self.Modifiers['over'] = 2 603 self.Modifiers['eind van'] = 0 604 605 #morgen/abermorgen does not work, see http://code.google.com/p/parsedatetime/issues/detail?id=19 606 self.dayOffsets['morgen'] = 1 607 self.dayOffsets['vandaag'] = 0 608 self.dayOffsets['gisteren'] = -1 609 self.dayOffsets['eergisteren'] = -2 610 self.dayOffsets['overmorgen'] = 2 611 612 # special day and/or times, i.e. lunch, noon, evening 613 # each element in the dictionary is a dictionary that is used 614 # to fill in any value to be replace - the current date/time will 615 # already have been populated by the method buildSources 616 self.re_sources['middag'] = { 'hr': 12, 'mn': 0, 'sec': 0 } 617 self.re_sources['vanmiddag'] = { 'hr': 12, 'mn': 0, 'sec': 0 } 618 self.re_sources['lunch'] = { 'hr': 12, 'mn': 0, 'sec': 0 } 619 self.re_sources['morgen'] = { 'hr': 6, 'mn': 0, 'sec': 0 } 620 self.re_sources['\'s morgens'] = { 'hr': 6, 'mn': 0, 'sec': 0 } 621 self.re_sources['ontbijt'] = { 'hr': 8, 'mn': 0, 'sec': 0 } 622 self.re_sources['avondeten'] = { 'hr': 19, 'mn': 0, 'sec': 0 } 623 self.re_sources['avond'] = { 'hr': 18, 'mn': 0, 'sec': 0 } 624 self.re_sources['avonds'] = { 'hr': 18, 'mn': 0, 'sec': 0 } 625 self.re_sources['middernacht'] = { 'hr': 0, 'mn': 0, 'sec': 0 } 626 self.re_sources['nacht'] = { 'hr': 21, 'mn': 0, 'sec': 0 } 627 self.re_sources['nachts'] = { 'hr': 21, 'mn': 0, 'sec': 0 } 628 self.re_sources['vanavond'] = { 'hr': 21, 'mn': 0, 'sec': 0 } 629 self.re_sources['vannacht'] = { 'hr': 21, 'mn': 0, 'sec': 0 }
630