2016-06-25 12 views
6

Podczas korzystania z mechanizmu lokalizacji djangos (lub lepszego gettext), trudno jest uzyskać nazwy bieżących ustawień regionalnych. Zazwyczaj użyłbym calendar:Jak uzyskać zlokalizowane nazwy dnia w django?

calendar.day_name[current_day] 

Gdzie current_day jest int między 0 i 6. To nie zadziała, ponieważ nie wydaje Django poprawnie ustawić żądane ustawienia regionalne. Ta sama sytuacja w przypadku nazw miesięcy.

Jak poprawnie zlokalizować nazwy kalendarzy?

Odpowiedz

5

Można użyć 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 jest bezużyteczny w kontekście wniosku, w którym tłumaczenie zostało już aktywowane. Użyłem go tutaj na przykład celu.

Jeśli nie masz konkretną datę i potrzebują nazwę dnia tygodnia, wystarczy użyć ugettext to przetłumaczyć:

>>> import calendar 
>>> from django.utils import translation 
>>> from django.utils.translation import ugettext as _ 
>>> translation.activate('fr') 
>>> _(calendar.day_name[0]) 
'lundi' 
Powiązane problemy