2014-11-20 18 views
5

Sto costruendo un sito Django (1.6) (con twitter bootstrap) che ha alcune forme in cui l'utente deve compilare alcune date. Ho abilitato l10n e i18n. I campi datetime sono controllati da un widget JQuery. Il widget accetta un parametro per definire il formato di input della data e dell'ora. Come posso ottenere il formato datetime django corrente in un tag modello, in modo che possa mapparlo al suo equivalente Javascript? Quello che voglio è ottenere la localizzazione completa (come nl_BE, en_US, ...) perché vivo in Belgio e facciamo spreak francese, olandese e tedesco, ma tutti usiamo lo stesso formato di data. Se uso solo la lingua (con get_language da django.utils.translation), vedo i formati delle date da Francia e Germania.django country from request

>>> from django.utils import formats 
>>> formats.get_format("SHORT_DATE_FORMAT", lang="nl") 
Out[27]: u'j-n-Y' 
>>> formats.get_format("SHORT_DATE_FORMAT", lang="fr") 
Out[28]: u'j N Y' 
>>> formats.get_format("SHORT_DATE_FORMAT", lang="de") 
Out[29]: u'd.m.Y' 

ho controllato già Django-datetime-widget sul loro pagina demo, ma se posso passare il mio browser (Chrome) per olandese o francese, ma non cambia il formato della data ...

Chiunque ha un'idea per risolvere questo?

risposta

1

Sembra che sia necessario creare alcuni file di formato personalizzato, perché django non fornisce i formati locali per fr_BE, de_BE e nl_BE. Vedi https://docs.djangoproject.com/en/1.6/topics/i18n/formatting/#creating-custom-format-files su come creare i formati locali personalizzati.

Fondamentalmente implica la creazione di una nuova app che conterrà i nuovi formati e che specifica l'app utilizzando l'impostazione FORMAT_MODULE_PATH.

tuo formati applicazione dovrebbe essere qualcosa del tipo:

formats/ 
    __init__.py 
    fr_BE/ 
     __init__.py 
     formats.py 
    nl_BE/ 
     __init__.py 
     formats.py 
    de_BE/ 
     __init__.py 
     formats.py 

Si dovrebbe anche aggiungere fr-be, de-essere, e nl-essere a vostro lingue in settings.py

LANGUAGES = (
    ('nl-be', ugettext_lazy('Dutch (Belgium)')), 
    ('nl-fr', ugettext_lazy('French (Belgium)')), 
    ('nl-de', ugettext_lazy('German (Belgium)')), 
) 
+0

Grazie, Lo proverò. – WimDH