bpo-46659: Enhance LocaleTextCalendar for C locale (GH-31214) · python/cpython@4fccf91 (original) (raw)
`@@ -548,15 +548,28 @@ def formatyearpage(self, theyear, width=3, css='calendar.css', encoding=None):
`
548
548
`class different_locale:
`
549
549
`def init(self, locale):
`
550
550
`self.locale = locale
`
``
551
`+
self.oldlocale = None
`
551
552
``
552
553
`def enter(self):
`
553
``
`-
self.oldlocale = _locale.getlocale(_locale.LC_TIME)
`
``
554
`+
self.oldlocale = _locale.setlocale(_locale.LC_TIME, None)
`
554
555
`_locale.setlocale(_locale.LC_TIME, self.locale)
`
555
556
``
556
557
`def exit(self, *args):
`
``
558
`+
if self.oldlocale is None:
`
``
559
`+
return
`
557
560
`_locale.setlocale(_locale.LC_TIME, self.oldlocale)
`
558
561
``
559
562
``
``
563
`+
def _get_default_locale():
`
``
564
`+
locale = _locale.setlocale(_locale.LC_TIME, None)
`
``
565
`+
if locale == "C":
`
``
566
`+
with different_locale(""):
`
``
567
`+
The LC_TIME locale does not seem to be configured:
`
``
568
`+
get the user preferred locale.
`
``
569
`+
locale = _locale.setlocale(_locale.LC_TIME, None)
`
``
570
`+
return locale
`
``
571
+
``
572
+
560
573
`class LocaleTextCalendar(TextCalendar):
`
561
574
`"""
`
562
575
` This class can be passed a locale name in the constructor and will return
`
`@@ -566,7 +579,7 @@ class LocaleTextCalendar(TextCalendar):
`
566
579
`def init(self, firstweekday=0, locale=None):
`
567
580
`TextCalendar.init(self, firstweekday)
`
568
581
`if locale is None:
`
569
``
`-
locale = _locale.getlocale(_locale.LC_TIME)
`
``
582
`+
locale = _get_default_locale()
`
570
583
`self.locale = locale
`
571
584
``
572
585
`def formatweekday(self, day, width):
`
`@@ -586,7 +599,7 @@ class LocaleHTMLCalendar(HTMLCalendar):
`
586
599
`def init(self, firstweekday=0, locale=None):
`
587
600
`HTMLCalendar.init(self, firstweekday)
`
588
601
`if locale is None:
`
589
``
`-
locale = _locale.getlocale(_locale.LC_TIME)
`
``
602
`+
locale = _get_default_locale()
`
590
603
`self.locale = locale
`
591
604
``
592
605
`def formatweekday(self, day):
`