Come impostare in modo esplicito django_language
nella sessione Django
?Come impostare in modo esplicito django_language nella sessione di django
Grazie mille ...
Come impostare in modo esplicito django_language
nella sessione Django
?Come impostare in modo esplicito django_language nella sessione di django
Grazie mille ...
Se si desidera che gli utenti siano in grado di specificare la lingua, assicurarsi che LocaleMiddleware
è abilitato:
MIDDLEWARE_CLASSES = (
...
'django.middleware.locale.LocaleMiddleware',
...
)
Poi Django cercherà la preferenza lingua dell'utente in quell'ordine (vedi get_language_from_request
in trans_real.py):
request.path_info
, se vengono utilizzati i18n_patterns;request.session[settings.LANGUAGE_SESSION_KEY]
;request.COOKIES[settings.LANGUAGE_COOKIE_NAME]
;request.META['HTTP_ACCEPT_LANGUAGE']
, finché non viene trovato uno accettato;settings.LANGUAGE_CODE
.Quindi il modo più semplice per impostare la lingua in modo esplicito in sessione Django è di riscrivere request.session[settings.LANGUAGE_SESSION_KEY]
:
def someview (request):
...
request.session[settings.LANGUAGE_SESSION_KEY] = 'en'
...
E se si utilizzerà una versione >= Django 1.8
. Ecco come potremmo usarlo:
Funziona in modo più coerente poiché le impostazioni potrebbero non avere la proprietà 'LANGUAGE_SESSION_KEY' –
Considerare l'utilizzo di django.views.i18n.set_language(). Attivare questo punto di vista aggiungendo la seguente riga al URLconf:
# This example makes the view available at /i18n/setlang/
url(r'^i18n/', include('django.conf.urls.i18n')),
Per comodità, Django è dotato di una vista,
django.views.i18n.set_language()
, che imposta la lingua preferenze di un utente e reindirizza a un determinato URL o, per predefinito, torna alla pagina precedente .La vista si aspetta di essere richiamata tramite il metodo POST, con una serie di parametri nella richiesta. Se il supporto sessione è abilitato, la vista salva la lingua scelta nella sessione dell'utente. Altrimenti, salva la lingua scelta in un cookie di default denominato
django_language
. (Il nome può essere modificato attraverso l'impostazioneLANGUAGE_COOKIE_NAME
.)
grazie, ho fatto esattamente come prima, ma non ha funzionato, si è scoperto che ho usato un linguaggio etichetta non in lista LINGUE defualt, è fresco adesso. Grazie – icn
Per non parlare del pratico ['django.views.i18n.set_language()'] (https://docs.djangoproject.com/en/1.2/topics/i18n/internationalization/#the-set-language- redirect-view) –
ha funzionato grazie mille – suhailvs