2013-12-13 42 views
1
[d33tah-pc][~] $ LC_ALL="pl_PL.UTF-8" date 
sob, 14 gru 2013, 00:26:48 CET 
[d33tah-pc][~] $ LC_ALL="pl_PL.UTF-8" python 
Python 2.7.5 (default, Nov 12 2013, 16:18:42) 
[GCC 4.8.2 20131017 (Red Hat 4.8.2-1)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import time 
>>> time.strftime("%c") 
'Sat Dec 14 00:26:57 2013' 
>>> import locale 
>>> locale.setlocale(locale.LC_TIME, 'pl_PL.UTF-8') 
'pl_PL.UTF-8' 
>>> time.strftime("%c") 
'sob, 14 gru 2013, 00:27:09' 

为什么Python在这种情况下不使用系统的环境变量?为什么Python忽略LC_ALL?

回答

3

因为它没有有史以来默认使用它们。必须明确启用语言环境支持。

locale.setlocale(locale.LC_TIME, '') 
+0

+1。它的作用就像POSIX C代码一样:你必须明确地用'“”'来请求本地环境才能获得本地环境。 (我会链接到POSIX规范,但目前服务器似乎正在关闭......只是谷歌“POSIX语言环境”,这是第一个链接。) – abarnert