2013-07-27 65 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是最好的解決方案!