Estoy intentando activar diferentes idiomas para mi proyecto. Inglés y español en este momento.Django i18n no funciona
voy a describir todos los pasos seguir a:
En primer lugar, me sitúo en el directorio que desea traducir. O mejor dicho, donde todos {% trans%} etiquetas son:
$ cd media/templates/landing/
$ mkdir locale
$ django-admin.py makemessages --locale=en
último comando crea el directorio/archivo /locale/en/LC_MESSAGES/django.po
abro django.po y procedo para completar todos los campos de msgstr en idioma inglés. la etiqueta msgid está en español. Respeto los consejos sobre el caso de mensajes largos. Después de relleno en este archivo, que hago:
$ django-admin.py compilemessages
Este django.po proceso y crea django.mo.
Así que modifico settings.py. líneas importantes:
TEMPLATE_CONTEXT_PROCESSORS = (
'ism.context_processor.user_vars',
'django.contrib.auth.context_processors.auth',
'django.core.context_processors.debug',
'django.core.context_processors.i18n',
'django.core.context_processors.media',
'django.core.context_processors.static',
'django.contrib.messages.context_processors.messages',
'django.core.context_processors.request',
)
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'pipeline.middleware.MinifyHTMLMiddleware',
}
TIME_ZONE = 'Atlantic/Canary'
LANGUAGE_CODE = 'es'
USE_I18N = True
_ = lambda s: s
LANGUAGES = (
('es', _('Espanol')),
('en', _('English')),
)
USE_L10N = True
USE_TZ = True
Por último, añado esta línea para URLS.py:
(r'^i18n/', include('django.conf.urls.i18n')),
I reiniciar mi servidor de desarrollo, puedo configurar mi navegador Firefox para elegir Inglés primero como primer idioma y no lo hace trabajo. Todos los textos aún se muestran en español en lugar de inglés.
Me aseguro de que Firefox esté configurado en inglés porque en la función Django view (que representa el archivo .html) hago una impresión con request.LANGUAGE_CODE, que imprime "en".
¿Qué estoy haciendo mal?
Qué te makemessages django-admin.py --locale = es? – Efazati
cómo el usuario cambia entre en y es? – Efazati
@Efazati El idioma principal de mi proyecto es ES, no EN. Así que entiendo que debo hacer 'django-admin.py makemessages --locale = en', ¿no? De esta forma, el archivo django.po creado tiene campos de msgid en español y tengo que completar los campos msgstr en inglés. –