当使用djangos(或更好的gettext)本地化机制时,很难获得当前语言环境的日期名称。通常,我会使用calendar
:
calendar.day_name[current_day]
其中current_day
是0到6之间的int。这不起作用,因为Django似乎没有正确设置请求的语言环境。月份名称的情况相同。
那么,如何正确地本地化日历名称呢?
答案 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
。