如何在django中获取本地化的日期名称?

mic*_*x5d 8 python django calendar localization internationalization

当使用djangos(或更好的gettext)本地化机制时,很难获得当前语言环境的日期名称.通常,我会使用calendar:

calendar.day_name[current_day]
Run Code Online (Sandbox Code Playgroud)

哪个current_day是0到6之间的int.这不起作用,因为Django似乎没有正确设置所请求的语言环境.月份名称的情况相同.

那么,如何正确地本地化日历名称?

Ant*_*ard 8

你可以用django.utils.formats.date_format.

>>> from django.utils.formats import date_format
>>> from django.utils import translation
>>> from datetime import date
>>> date_format(date.today(), 'l')
'Saturday'
>>> translation.activate('fr')
>>> date_format(date.today(), 'l')
'samedi'
Run Code Online (Sandbox Code Playgroud)

translation.activate在已经激活翻译的请求的上下文中是无用的.我在这里用它是出于示例目的.

如果您没有特定日期并且需要一周中某天的名称,请使用ugettext进行翻译:

>>> import calendar
>>> from django.utils import translation
>>> from django.utils.translation import ugettext as _
>>> translation.activate('fr')
>>> _(calendar.day_name[0])
'lundi'
Run Code Online (Sandbox Code Playgroud)