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

时间:2016-06-25 15:07:06

标签: python django localization calendar internationalization

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

calendar.day_name[current_day]

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

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

2 个答案:

答案 0 :(得分: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'

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'

答案 1 :(得分:0)

您可以使用calendar中的from calendar import day_name, different_locale def get_localized_day_name(day, locale): with different_locale(locale): return day_name[day] 返回本地化的日期名称:

locale

request.LANGUAGE_CODE是一个包含所需语言环境的字符串,例如paddingTop