2009-08-23 18 views
5

Ho giocato con il sistema i18n di Django e sembra che funzioni principalmente. Tuttavia, le date nel codice del modello sembrano causare un problema.Django i18n e python locales (e date)

Io uso datetime.strftime per popolare alcune tuple di CHOICES che vengono poi utilizzate nei moduli.

Da quello che ho capito, django imposterà le impostazioni internazionali in base alla scelta dell'utente in modo che datetime.strftime() venga emesso nella lingua appropriata, ma ciò non sembra avvenire.

Cosa mi manca qui?

Se imposto manualmente la locale (ad esempio locale.setlocale (locale.LC_TIME, 'de_DE.UTF-8')) datetime viene tradotto correttamente.

Grazie,

Tom

risposta

3

Django non imposta locale per la traduzione, basta carica catalogo di traduzioni. Per ottenere l'effetto desiderato è possibile impostare la locale (che non è una buona opzione poiché funziona a livello di processo) o utilizzare una libreria specializzata. Raccomando Babel che ha una buona integrazione con Django.

+1

Ah, grazie Zgoda. Penso piuttosto che i documenti del django dovrebbero essere un po 'più espliciti, piuttosto suggeriscono che l'i18n fa più di quello che effettivamente fa. –

+0

Direi che fa "i18n" come pubblicizzato. La formattazione di date e valori monetari è "l10n" (localizzazione) che è assente in Django comunque. Questo è il dominio della biblioteca di Babel. :) – zgoda

1

Recentemente ho affrontato problema simile ma è riuscito a risolvere il problema utilizzando format al posto del pitone strftime

+0

Ho provato con il formato ma% B e% b non sono riconosciuti :(Qualsiasi aiuto? – Natim

+0

% B è% F e% b è% f nella funzione di formato :) –

+0

grazie codice22 per la soluzione di formato, I non volevo usare babel per il mio piccolo progetto. funzionando come previsto –