2016-06-25 9 views
6

Bei Verwendung des Lokalisierungsmechanismus von djangos (oder besser gettext) ist es schwierig, die Tagesnamen des aktuellen Gebiets zu erhalten. Normalerweise würde ich calendar verwenden:Wie lokalisierte Tagnamen in Django erhalten?

calendar.day_name[current_day] 

Wo current_day ist ein int zwischen 0 und 6 Das wird nicht funktionieren, wie Django scheint nicht das angeforderte Gebietsschema richtig einzustellen. Gleiche Situation für Monatsnamen.

Also, wie Kalendernamen richtig zu lokalisieren?

Antwort

5

Sie können django.utils.formats.date_format verwenden.

>>> 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 ist nutzlos, im Rahmen einer Anfrage, wo Übersetzung ist bereits aktiviert. Ich habe es hier zum Beispiel verwendet.

Wenn Sie nicht über ein bestimmtes Datum und müssen die Namen eines Tages der Woche, benutzen Sie einfach ugettext zu übersetzen:

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