2009-08-23 36 views
5

He estado jugando con el sistema i18n de Django y parece que funciona en su mayoría. Sin embargo, las fechas en el código del modelo parecen estar causando un problema.Django i18n y Python locales (y fechas)

Uso datetime.strftime para llenar algunas tuplas de CHOICES que luego se usan en formularios.

Por lo que he entendido, django configurará la configuración regional a elección del usuario para que datetime.strftime() salga en el idioma apropiado, pero esto no parece suceder.

¿Qué me falta aquí?

Si configuro la configuración regional manualmente (por ejemplo, locale.setlocale (locale.LC_TIME, 'de_DE.UTF-8')) datetime se traduce correctamente.

Gracias,

Tom

Respuesta

3

Django no establece la configuración regional para la traducción, que simplemente cargará catálogo de traducción. Para obtener el efecto deseado, puede establecer la configuración regional (que no es una buena opción ya que funciona en todo el proceso) o utilizar una biblioteca especializada. Recomiendo Babel que tiene buena integración con Django.

+1

Ah, gracias a que Zgoda. Prefiero pensar que los documentos de django deberían ser un poco más explícitos, más bien sugieren que el i18n hace más de lo que realmente hace. –

+0

Diría que tiene "i18n" como se anuncia. El formato de fechas y valores monetarios es "l10n" (localización), que de todos modos está ausente en Django. Ese es el dominio de la biblioteca de Babel. :) – zgoda

1

recientemente he enfrentado a un problema similar, pero logró resolver el problema mediante el uso de format en lugar de la pitón strftime

+0

He intentado con el formato, pero% B y% b no son reconocidos :(¿Alguna ayuda? – Natim

+0

% B es% F y% b es% f en la función de formato :) –

+0

Gracias code22 por la solución de formato, I No quería usar Babel para mi pequeño proyecto. trabajando como se esperaba –