2010-10-15 11 views
1

L'utilisation de {{today|time:"TIME_FORMAT"}} localise correctement les moments où je change de langue dans mon projet Django 1.2.3. Par exemple. pour l'anglais je vois "12:19 a.m." et quand je passe à l'allemand, il change en "12:19:25".Pourquoi le filtre de temps de Django ne récupère-t-il pas le TIME_FORMAT par défaut?

Pour autant que je peux dire de regarder la documentation et le code (defaultfilters.py et formats.py) tout en utilisant {{today:time}} devrait faire la même chose et à défaut TIME_FORMAT mais cela ne fonctionne pas et il utilise toujours le format anglais par défaut.

Existe-t-il un moyen d'éviter de devoir modifier tous mes modèles et de les modifier en {{today|time:"TIME_FORMAT"}}? La même chose se produit avec le filtre date et DATE_FORMAT

Répondre

1

Merci @Ned Batchelder, selon l'option 2., je l'ai ajouté ce qui suit à mon fichier balises de modèle personnalisé: Je suppose que je ne

from django.template.defaultfilters import date as defaultfilters_date, time as defaultfilters_time 

# FORCE {{...|date}} to be equivalent to {{...|date:"DATE_FORMAT"}} so it localizes properly, ditto for time and TIME_FORMAT 

@register.filter(name="date") 
def date_localized(val, arg=None): 
    return defaultfilters_date(val, arg or "DATE_FORMAT") 

@register.filter(name="time") 
def time_localized(val, arg=None): 
    return defaultfilters_time(val, arg or "TIME_FORMAT") 
3

Les docs disent (Souligné par l'auteur):

Quand il est utilisé sans une chaîne de format:

{{ value|time }} 

... la chaîne de formatage définie dans le cadre de TIME_FORMAT sera utilisé, sans appliquer toute localisation.

Vous avez deux options:

  1. Modifier tous vos modèles pour faire le changement, ou

  2. Créer un nouveau filtre de votre propre que fait la façon dont vous voulez.

+0

Hmm, pas vu que peu de docs. Encore (en supposant que vous regardez http://docs.djangoproject.com/en/1.2/ref/templates/builtins/#time) il dit aussi: "Notez que le format prédéfini dépend des paramètres régionaux." et tout en bas "Changé dans Django 1.2: Les formats prédéfinis peuvent maintenant être influencés par les paramètres régionaux actuels." Donc, il semble qu'ils devraient pouvoir être "influencés" ... – Tom