2016-06-25 2 views
6

При использовании механизма локализации djangos (или лучше gettext) трудно получить имена дней текущего локали. Как правило, я хотел бы использовать calendar:Как получить локализованные дневные имена в django?

calendar.day_name[current_day] 

Где current_day является ИНТ от 0 до 6. Это не будет работать, так как Django, кажется, не правильно установить запрашиваемую локаль. Такая же ситуация для месячных имен.

Итак, как правильно локализовать имена календаря?

ответ

5

Вы можете использовать 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' 
Смежные вопросы