Automatisch lokalisierte Zeitformatierungen
Ein nur knapp dokumentiertes Feature ist die Lokalisierung von String innerhalb von Templatetags und Filtern. Dort reicht es, den betreffenden String in einen gettext-Shortcut zu setzen:
1 | {{ _("hello world")|upper }} |
Dieser Token würde als HELLO WORLD ausgegeben und natürlich auch mit den betreffenden .po Dateien lokalisierbar sein. Richtig sinnvoll wird es beim date Filter. Bisher hast du vielleicht das Datum fest vorgegeben:
1 | {{ entry.published|date:"d.m.Y H:M:S" }} |
Funktioniert im Deutschen ganz gut, aber da ja bekannterweise jede Sprache das Datum und die Zeit irgendwie anders formatiert, ist es eine gute Idee, die Formatierung auch lokalisierbar anzubieten:
1 | {{ entry.published|date:_("DATETIME_FORMAT") }} |
Schaut ein wenig komisch aus, funktioniert aber.
Clevererweise kennt Django bereits den i18n-String DATETIME_FORMAT und liefert für jede mitgelieferte Sprache die entsprechende Formatierung in den gettext-Katalogen mit. Je nach Locale-Einstellung ist die Ausgabe landestypisch:
1 2 3 | de-de: 21. März 2009, 20:24 en-us: March 21, 2009, 8:24 p.m. pt-br: 21 de Março de 2009 às 20:24 |
Neben DATETIME_FORMAT werden auch gleich DATE_FORMAT, TIME_FORMAT, YEAR_MONTH_FORMAT und MONTH_DAY_FORMAT mitgeliefert. ![]()
Geschrieben am: 21. März 2009 um 20:35 Uhr, Abgelegt in Django & Python
Kommentare zu diesem Artikel (4):
-
Stefan schrieb am 23. März 2009:
Sehr praktisch, vielen Dank für den Tipp. Ich habe neulich erst das ganze mit (msgid "g:i a", msgstr "H:i") lokalisiert. Funktioniert auch, aber so ist es natürlich schicker.
-
Delle schrieb am 27. März 2009:
finzt nicht !
In template /home/detlef/0-webapp/csm_todo_my/templates/gates/detail_gate.html, error at line 127 Caught an exception while rendering: 'BoundField' object has no attribute 'day'
{{ form.abgabe|date:_("DATETIME_FORMAT") }} -
Martin schrieb am 27. März 2009:
@Delle: Ich habe deine Fehlermeldung gekürzt. Für lange Fehlermeldungen nutze bitte www.dpaste.de.
Das was du willst funktioniert nicht bei Formularfeldern, es ist für DateTime-Objekte aus Model-Instanzen gedacht.
Bei Formfeldern musst du das format-Argument des entsprechenden Widgets anpassen.
-
cabzyomthh schrieb am 02. Mai 2009:
xaAc5i qtjjqascvcln, [url=http://onmxiofdodzn.com/]onmxiofdodzn[/url], [link=http://zulcolpljnfh.com/]zulcolpljnfh[/link], http://rutinpmzgkiy.com/
Kommentar schreiben