尝试了解 Django 中的 L10N 实现,这是我的设置
LANGUAGE_CODE = 'fr-FR'
USE_L10N = True
If I try
>>> datetime.datetime.strptime('2012-05-30 15:30', '%Y-%m-%d %H:%M')
.strftime('%c')
它会给我'Wed May 30 15:30:00 2012'
那就是EN语言环境。但是,那doc https://docs.djangoproject.com/en/1.3/topics/i18n/localization/#format-localization是说:
[...] 访问相同内容但使用不同语言的两个用户将看到以不同方式格式化的日期和数字字段,具体取决于其当前区域设置的格式 [...]
他们是在谈论各自浏览器的区域设置吗?
如果没有,我如何将其默认设置为法语?
Django 的本地化在 Django 模板和表单的上下文中工作,并且不能沿着链向上传播到 Python 的内部日期时间表示:
When using Django's formatting system, dates and numbers on templates
will be displayed using the format specified for the current locale.
...Django will also use localized formats when parsing data in forms.
所以如果你有USE_L10N = True
以及该地区的用户FR
enters 10,45
成一种形式,这将被解释为意味着10.45
在英语十进制系统中。类似地,模板标签的输出如下{{ value|date:"SHORT_DATE_FORMAT" }}
将根据用户的区域设置而有所不同。
然而,Python 内部strftime('%c')
不访问 Django 的设置,而是引用安装它的计算机上设置的区域设置。您可以检索并更改 Python 指向的区域设置:
>>> datetime.datetime.strptime('2012-05-30 15:30', '%Y-%m-%d %H:%M').strftime('%c')
'Wed May 30 15:30:00 2012'
>>> import locale
>>> locale.getlocale()
(None, None)
>>> locale.getdefaultlocale()
('en_US', 'UTF-8')
>>> locale.setlocale(locale.LC_ALL, "fr_FR.UTF-8")
'fr_FR.UTF-8'
>>> datetime.datetime.strptime('2012-05-30 15:30', '%Y-%m-%d %H:%M').strftime('%c')
'Mer 30 mai 15:30:00 2012'
或者通过设置环境变量$LANG
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)