如何获取无变格的本地化月份名称
获取无变格的本地化月份名称
我希望获取无变格的本地化月份名称。例如在波兰语中,July是lipiec,但“12th of July”会被拼写为12 lipca。我系统中运行以下代码输出的是lipca:
import calendar import locale import datetime locale.setlocale(locale.LC_ALL, '') month = calendar.month_name[datetime.datetime.now().month] print(month)
问题原因
calendar.month_name 返回的是月份名称的属格形式(比如波兰语的第二格),它默认适配“X月的Y日”这类日期表达场景,而非独立使用的主格(无变格)月份名称。
解决方案
用 locale.nl_langinfo() 配合 locale.MON_* 系列常量,就能直接获取主格的月份名称:
import locale import datetime # 设定系统本地化 locale.setlocale(locale.LC_ALL, '') # 获取当前月份的主格名称 current_month = datetime.datetime.now().month # MON_1对应一月,依次对应到MON_12 month_main_form = locale.nl_langinfo(getattr(locale, f"MON_{current_month}")) print(month_main_form)
批量获取所有月份主格名称
如果需要一次性拿到全年12个月的无变格名称,可以这样写:
import locale locale.setlocale(locale.LC_ALL, '') all_months = [locale.nl_langinfo(getattr(locale, f"MON_{i}")) for i in range(1, 13)] print(all_months)
注意事项
要确保你的系统已经安装了目标语言的本地化包,比如波兰语需要安装 pl_PL.UTF-8,否则可能无法正常返回对应语言的月份名称。
内容的提问来源于stack exchange,提问作者Hubert Bossy
相关产品推荐
相关产品推荐

