← 返回首页
bpo-46659: calendar uses locale.getlocale() by vstinner · Pull Request #31166 · python/cpython · GitHub
Skip to content

Navigation Menu

Toggle navigation
Sign in
Appearance settings
Search or jump to...

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Include my email address so I can be contacted

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
Resetting focus

bpo-46659: calendar uses locale.getlocale()#31166

Merged
vstinner merged 2 commits into
python:mainfrom
vstinner:calendar_defaultlocale
Feb 7, 2022
Merged

bpo-46659: calendar uses locale.getlocale()#31166
vstinner merged 2 commits into
python:mainfrom
vstinner:calendar_defaultlocale

Conversation

vstinner commented Feb 6, 2022
edited by bedevere-bot
Loading

Copy link
Copy Markdown
Member

The calendar.LocaleTextCalendar and calendar.LocaleHTMLCalendar
classes module now use locale.getlocale(), instead of using
locale.getdefaultlocale(), if no locale is specified.

https://bugs.python.org/issue46659

The calendar.LocaleTextCalendar and calendar.LocaleHTMLCalendar classes module now use locale.getlocale(), instead of using locale.getdefaultlocale(), if no locale is specified.

vstinner commented Feb 6, 2022

Copy link
Copy Markdown
Member Author

vstinner commented Feb 6, 2022
edited
Loading

Copy link
Copy Markdown
Member Author

Example with cal_locale.py attached to bpo-46659. Run the program in English, but switch to a french locale before creating the LocaleTextCalendar() instance.

Current behavior: calendar speaks English, even if the current LC_TIME locale is French:

$ LC_ALL=en_US.utf8 ./python cal_locale.py fr_FR.utf8 locale.getlocale()=('fr_FR', 'UTF-8') locale.getdefaultlocale()=('en_US', 'UTF-8') cal.locale=('en_US', 'UTF-8') August 2022 Monday Tuesday Wednesday Thursday Friday Saturday Sunday 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

With this PR: calendar speaks French:

$ LC_ALL=en_US.utf8 ./python cal_locale.py fr_FR.utf8 locale.getlocale()=('fr_FR', 'UTF-8') locale.getdefaultlocale()=('en_US', 'UTF-8') cal.locale=('fr_FR', 'UTF-8') août 2022 lundi mardi mercredi jeudi vendredi samedi dimanche 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

Applications which don't call setlocale() to change the LC_ALL or LC_TIME locale are not affected.

Copy link
Copy Markdown
Member

Would not be more correct to use locale.getlocale(locale.LC_TIME)?

vstinner commented Feb 7, 2022

Copy link
Copy Markdown
Member Author

With this PR, the two classes store the current locale when an instance is created. Is it really an important feature?

Or would it be acceptable to use the current locale (don't change the locale) if locale=None is passed (default behavior)?

vstinner commented Feb 7, 2022

Copy link
Copy Markdown
Member Author

Would not be more correct to use locale.getlocale(locale.LC_TIME)?

You're right: done.

vstinner merged commit 7a0486e into python:main Feb 7, 2022
vstinner deleted the calendar_defaultlocale branch February 7, 2022 23:24

vstinner commented Feb 7, 2022

Copy link
Copy Markdown
Member Author

Merged, thanks for your reviews.

With this PR, the two classes store the current locale when an instance is created. Is it really an important feature?

In case of doubt, I prefer to leave the code as it is.

This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

Footer

© 2026 GitHub, Inc.