Sto provando ad attivare lingue diverse per il mio progetto. Inglese e spagnolo adesso.Django i18n non funziona
descriverò tutte le misure che seguo:
Prima di tutto, mi pongo nella directory voglio tradurre. O per meglio dire, in cui tutte le {% trans%} tag sono:
$ cd media/templates/landing/
$ mkdir locale
$ django-admin.py makemessages --locale=en
Ultimo comando crea la directory/file di /locale/en/LC_MESSAGES/django.po
apro django.po e procedo per completare tutti i campi msgstr in inglese. l'etichetta msgid è in spagnolo. Rispetto i suggerimenti sul caso di messaggi lunghi. Dopo riempimento in questo file, io faccio:
$ django-admin.py compilemessages
Questo processo django.po e crea django.mo.
Quindi modifico settings.py. Linee Importante:
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
Infine, aggiungo questa linea a URLS.py:
(r'^i18n/', include('django.conf.urls.i18n')),
si riavvia il server di sviluppo, ho configurato il mio browser Firefox per scegliere l'inglese come prima lingua principale e non lo fa lavoro. Tutti i testi continuano a essere visualizzati in spagnolo e inglese.
Mi assicuro che Firefox sia configurato in inglese perché nella funzione di visualizzazione di Django (che esegue il rendering .html) faccio una stampa con request.LANGUAGE_CODE, che stampa "en".
Cosa sto sbagliando?
ti è makemessages django-admin.py --locale = es? – Efazati
in che modo l'utente passa da en a es? – Efazati
@Efazati La lingua principale del mio progetto è ES, non EN. Quindi capisco che devo fare 'django-admin.py makemessages --locale = it', vero? In questo modo, il file django.po creato ha campi msgid in spagnolo e devo completare i campi msgstr in inglese. –