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:
{{ _("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:
{{ 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:
{{ 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:
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. :-)
Stefan March 23, 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 March 27, 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'
Martin Mahner March 27, 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][1] anpassen.
[1]: http://docs.djangoproject.com/en/dev/ref/forms/widgets/#d...
Oliver May 16, 2009
Sehr guter Tipp. Danke dafür.