2011-10-19 25 views
5

No puedo obtener traducciones para que aparezcan en mis plantillas. Esto es lo que he hecho:Django i18n no funciona

  1. En mi archivo de plantilla (index.html), he cargado i18n y se utiliza la etiqueta trans donde quiero traducciones.
  2. En mi directorio del proyecto, que rand ./manage.py makemessages -l es
  3. Mi archivo django.po está en ./conf/locale/es/LC_MESSAGES/django.po
  4. edité este archivo con las traducciones.
  5. Entonces me encontré con ./manage.py compilemessages
  6. puse mis LANGUAGE_CODE a 'es' en settings.py
  7. Agregado django.middleware.locale.LocaleMiddleware-MIDDLEWARE_CLASSES entre SessionMiddleware y CommonMiddleware.
  8. Reinicié Django, actualicé mi página.

Solo se muestran las representaciones en inglés. ¿Qué estoy haciendo mal aquí? ¿Me he perdido algo?

Respuesta

0

Ok, encontré el problema ... Mis archivos po estaban en ./conf/locale en lugar de solo ./locale.

La razón por la que creé ./conf/locale fue porque cuando randé django-admin.py makemessages, me lo ordenó. Sin embargo, si está en su directorio de proyecto local, simplemente es ./locale.

2

Django's LocaleMiddleware intenta determinar la configuración regional a partir de la solicitud especificada y reemplaza el LANGUAGE_CODE en consecuencia. Pasa a través de los siguientes pasos:

  1. Cheques la sesión para una variable de sesión llamada django_language. Establezca el idioma en la configuración regional dada en esta sesión. Si no existe, va a 2.
  2. Comprueba las cookies para un conjunto de variables similar (puede definir el nombre usted mismo). No existe va a 3.
  3. Intenta determinar el idioma del encabezado HTTP_ACCEPT_LANGUAGE. Si no es posible, irá a 4.
  4. Por fin usará la configuración LANGUAGE_CODE como configuración local.

En todas las etapas, excepto 4 se comprobará si el idioma se da en su entorno LANGUAGES, que es una tupla de 2-tuplas que representan código de idioma y el título del lenguaje. Asegúrese de establecer/sobrescribir el valor predeterminado, ya que el valor predeterminado sería una tupla de todos los idiomas disponibles de Django.

Si tiene varios idiomas en su sitio Django:

Asegúrese de que su cookies de sesión o se han establecido correctamente. Puede usar la vista interna de Django para configurar el idioma (django.views.i18n.set_language).

Si tienes un solo idioma:

Si sólo tiene Español por lo general no tiene que molestarse con esto. Solo asegúrese de que LANGUAGES y LANGUAGE_CODE estén configurados. No intentará configurar el idioma de las páginas en el idioma de su navegador si no se proporciona en LANGUAGES. Además, debe asegurarse de que USE_I18N = True. Sin embargo, ese debería ser el valor predeterminado, así que al menos asegúrese de no haberlo configurado en False en algún lugar.

+1

Yep. He seguido todo esto ... parece que no puedo traducirlo. Me esta volviendo loco. Estoy seguro de que me estoy perdiendo algo que no está en la lista o algo oscuro. Tal vez después de dormir lo conseguiré ... – intargc