2009-08-23 7 views
5

J'ai joué avec le système i18n de Django et il semble fonctionner principalement. Cependant, les dates dans le code du modèle semblent causer un problème.Django i18n et python locales (et dates)

J'utilise datetime.strftime pour remplir quelques tuples CHOIX qui sont ensuite utilisés dans les formulaires. D'après ce que j'ai compris, django définira les paramètres régionaux au choix de l'utilisateur afin que datetime.strftime() apparaisse dans la langue appropriée, mais cela ne semble pas se produire.

Qu'est-ce qui me manque ici?

Si je définis les paramètres régionaux manuellement (par exemple, locale.setlocale (locale.LC_TIME, 'de_DE.UTF-8')) datetime se traduit correctement.

Merci,

Tom

Répondre

3

Django ne locale définissent pas pour la traduction, juste des charges catalogue de traduction. Pour obtenir l'effet désiré, vous devez soit définir les paramètres régionaux (ce qui n'est pas une bonne option car cela fonctionne à l'échelle du processus) ou utiliser une bibliothèque spécialisée. Je recommande Babel qui a une belle intégration de Django.

+1

Ah, je vous remercie Zgoda. Je pense plutôt que les docs django devraient être un peu plus explicites, ils suggèrent plutôt que le i18n fait plus qu'il ne le fait réellement. –

+0

Je dirais qu'il fait "i18n" comme annoncé. La mise en forme des dates et des valeurs monétaires est "l10n" (localisation) qui est absente dans Django de toute façon. C'est le domaine de la bibliothèque Babel. :) – zgoda

1

J'ai récemment fait face à problème similaire mais a réussi à résoudre le problème en utilisant format au lieu du python strftime

+0

J'ai essayé avec le format mais% B et% b ne sont pas reconnus :(Toute aide? – Natim

+0

% B est% F et% b est% f dans la fonction de format :) –

+0

merci code22 pour la solution de format, je Je ne voulais pas utiliser Babel pour mon petit projet. fonctionnant comme prévu –