2013-07-27 63 views
2

我想要Python自动给出本地化月份名称。Python中的本地化月份名称

我使用这段代码:datetime.datetime.strptime(j, "%m").strftime("%B")其中j是月份编号。

我的问题是,当我期待“Janvier”(法语区域)时,它一直给我“一月”。

我试图用locale玩一点,我发现使它工作的唯一方法是在脚本开始时调用locale.set_locale(locale.LC_ALL, "")

这是最好的方法吗?还是有什么问题和更好的解决方案?

感谢

+0

鉴于Python的文档给'%B'作为'区域设置的月份名称“,设置区域设置应该是一个很好的方法来做到这一点! –

+0

是的,调用'locale.set_locale()'是设置默认语言环境的好方法。 – martineau

+0

好吧,我会去用它。我认为Python会自动设置语言环境,而不需要告诉它这样做。 – Phyks

回答

1

如果您在区域设置在操作系统级别,

locale.set_locale(locale.LC_ALL, '') 
print locale.nl_langinfo(locale.LC_MON1) 

"janvier" 

或者你可以在蟒蛇级别设置:

locale.set_locale(locale.LC_ALL, 'fr_FR') 
print locale.nl_langinfo(locale.LC_MON1) 

"janvier" 
+0

在我的系统上它是'locale.MON_1'(python 2.7.3) – Joril

4

如果你只是wan't它影响日期时间函数试试这个:

def getLocalizedMonth(j): 
    locale.set_locale(locale.LC_ALL, "") 
    datetime.datetime.strptime(j, "%m").strftime("%B") 
    locale.setlocale(locale.getdefaultlocale()) 

是的,我想到用locale.setlocale是最好的解决方案!